Наше приложение Phoenix не запустилось из-за телеметрии - PullRequest
2 голосов
/ 06 августа 2020

Наша команда разрабатывает проект Phoenix, и на этой неделе к нам присоединился новый участник. Он пытается работать в среде Docker в системе Ubuntu 20.04.

Он вытащил исходный код из нашего репозитория GitHub и обнаружил, что наше приложение не запускается с этим сообщением об ошибке:

[error] beam/beam_load.c(1883): Error loading module telemetry_app:
  This BEAM file was compiled for a later version of the run-time system than 22.
  To fix this, please recompile this module with an 22 compiler.
  (Use of opcode 169; this emulator supports only up to 168.)

[info]  Application telemetry exited: exited in: :telemetry_app.start(:normal, [])
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function :telemetry_app.start/2 is undefined (module :telemetry_app is not available)
            (telemetry 0.4.2) :telemetry_app.start(:normal, [])
            (kernel 6.5.2.1) application_master.erl:277: :application_master.start_it_old/4

Его результат mix hex.info находится здесь:

Hex:    0.20.5
Elixir: 1.10.3
OTP:    22.3.4.2

Built with: Elixir 1.10.0 and OTP 21.3

Мы, кроме него, продолжаем работать в обычном режиме. Как мы можем ему помочь?

Мы нашли возможного виновника: ElixirLS , плагин для Visual Studio Code.

Помимо него, члены нашей команды используют текстовые редакторы, чем VSCode.

Когда он удалил этот плагин из VSCode, все прошло хорошо.

Я не знаю, в чем root причина этой проблемы, но я полагаю, что этот плагин компилируется зависимости нашего проекта вне среды Docker, поэтому возникает несоответствие версий.

Он попытался запустить наше приложение с помощью docker-compose up -d app.

Команда, указанная в разделе command в docker-compose.yml это:

elixir --cookie xyz --sname xyz@app
      --erl "-kernel inet_dist_listen_min 6000 inet_dist_listen_max 6100" -S mix phx.server

1 Ответ

2 голосов
/ 06 августа 2020

Я удалил файлы расширения ElixirLS и смешал, все работает нормально, я не знаю причины, но я хочу использовать ElixirLS: поддержку и отладчик Elixir.

...