elixir - ошибка при загрузке модуля ranch_server - перекомпилируйте этот модуль с 20 компилятором - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь запустить существующий проект elixir, который работает на моем другом компьютере, на новом компьютере (оба Mac).

Когда я запускаю iex -S mix, я получаю:

iex -S mix
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false]


11:47:52.651 [error] Loading of /Users/benjamin/vepo/api/_build/dev/lib/ranch/ebin/ranch_server.beam failed: :badfile


11:47:52.651 [error] beam/beam_load.c(1863): Error loading module ranch_server:
  This BEAM file was compiled for a later version of the run-time system than 20.
  To fix this, please recompile this module with an 20 compiler.
  (Use of opcode 164; this emulator supports only up to 159.)



11:47:52.657 [info]  Application ranch exited: :ranch_app.start(:normal, []) returned an error: shutdown: failed to start child: :ranch_server
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function :ranch_server.start_link/0 is undefined (module :ranch_server is not available)
            (ranch) :ranch_server.start_link()
            (stdlib) supervisor.erl:365: :supervisor.do_start_child/2
            (stdlib) supervisor.erl:348: :supervisor.start_children/3
            (stdlib) supervisor.erl:314: :supervisor.init_children/2
            (stdlib) gen_server.erl:365: :gen_server.init_it/2
            (stdlib) gen_server.erl:333: :gen_server.init_it/6
            (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
** (Mix) Could not start application ranch: :ranch_app.start(:normal, []) returned an error: shutdown: failed to start child: :ranch_server
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function :ranch_server.start_link/0 is undefined (module :ranch_server is not available)
            (ranch) :ranch_server.start_link()
            (stdlib) supervisor.erl:365: :supervisor.do_start_child/2
            (stdlib) supervisor.erl:348: :supervisor.start_children/3
            (stdlib) supervisor.erl:314: :supervisor.init_children/2
            (stdlib) gen_server.erl:365: :gen_server.init_it/2
            (stdlib) gen_server.erl:333: :gen_server.init_it/6
            (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Benjamins-MacBook-Pro:api benjamin$

Я думаю, мне нужно перекомпилировать ranch_server.beam. Как мне это сделать?

1 Ответ

1 голос
/ 28 октября 2019

Похоже, вам нужно установить Erlang 21.0 или более позднюю версию. В данный момент вы используете версию 20. Какая версия на компьютере работает?

ASDF полезна для управления несколькими версиями erlang на одном компьютере.

Или, если вы просто хотите перекомпилировать зависимость, вы можете попробовать

mix do deps.clean ranch_server, deps.get, deps.compile
...