2017-12-26 15 views
-2

기능 string:find/2를 사용하려고하지만 난 터미널에서 사용할 때마다 오류얼랑 이유 종료 - 확정적 :

CRASH REPORT Process <0.779.0> with 0 neighbours exited with reason: {{undef,[{string,find,[[<<208,162,51,32,208,190,208,177,209,137,46,44,32,84,51,32,116,111,116,97,108,44>>],[<<208,186,209,128,208,190,208,178>>]],[]},{proxy_layer_cli_handle_req,do_execute_keysearch,4,[{file,\"/opt/proxy_layer/_build/test/lib/proxy_layer/src/proxy_layer_cli_handle_req.erl\"},{line,222}]},{proxy_layer_cli_handle_req,keysearch,3,[{file,\"/opt/proxy_layer/_build/test/lib/proxy_layer/src/proxy_layer_cli_handle_req.erl\"},{line,...}]},...]},...} 

을 받고 (문자열/2 FUNC를 찾을 수) - 모든 것이 괜찮

1> string:find(<<208,162,51,32,208,190,208,177,209,137,46,44,32,84,51,32,116,111,116,97,108,44>>,<<208,186,209,128,208,190,208,178>>).  
1> nomatch 

do_execute_keysearch([First|Rest], PriceList, Keyword, Acc) -> 
    Id = utils:get_value(<<"Id">>, First), 
    case utils:get_value(<<"Keywords">>, First) of 
    <<>> -> do_execute_keysearch(Rest, PriceList, Keyword, Acc); 
    undefined -> do_execute_keysearch(Rest, PriceList, Keyword, Acc); 
    Keys -> 
     case string:find(Keys, Keyword) of 
     nomatch -> 
      do_execute_keysearch(Rest, PriceList, Keyword, Acc); 
     _ -> 
      Price = find_price_by_service_id(PriceList, Id), 
      NewAcc = [lists:append(Price, First) | Acc], 
      do_execute_keysearch(Rest, PriceList, Keyword, NewAcc) 
     end 
    end; 
: 내가 얼랑 20.1 여기

을 사용하고

내가 사용하는 코드입니다

업데이트 : 도커 컨테이너에서 Erlang 버전을 변경 한 후 문제가 해결되었습니다. 그래서 문제가 더주의 깊게 오류에

+0

오류를 재현하기위한 전체 예제를 제공해주십시오. –

답변

-2

봐 지금 해결

얼랑 (19)에 정의되지 않은 일부 모듈이있는 이유를 알고하지 마십시오 (얼랑 20.1로 변경). 또는 오히려 그것을 재현 해보십시오. 다음 중 오류에 더 많이 맞는 것은 무엇입니까? 이 솔루션은 얼랑 (19)에 undef 오류가 이유입니다

1> catch lists:nonexist(<<1>>, <<2>>). 
{'EXIT',{undef,[{lists,nonexist,[<<1>>,<<2>>],[]}, 
       {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, 
       {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, 
       {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, 
       {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, 
       {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]}} 
2> catch lists:nonexist([<<1>>], [<<2>>]). 
{'EXIT',{undef,[{lists,nonexist,[[<<1>>],[<<2>>]],[]}, 
       {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, 
       {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, 
       {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, 
       {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, 
       {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]}} 
+0

답변 해 주셔서 감사합니다. 문제를 찾았습니다! 나는 도커를 사용하고 있으며 erlang 19vsn이 있습니다. Erlang 모듈이없는 이유를 모르겠습니다. 버전을 20.1로 변경하고 오류가 사라졌습니다. – Qbeck