Наше приложение Phoenix не запустилось из-за телеметрии

Наша команда разрабатывает проект 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, все прошло хорошо.

Я не знаю, какова основная причина этой проблемы, но я предполагаю, что этот плагин компилирует зависимости нашего проекта за пределами среды 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

person Tsutomu    schedule 05.08.2020    source источник
comment
Вы скопировали его дважды :) Также требуется дополнительная диагностика. 1) В меню ViewOutput и затем в раскрывающемся списке выберите → ElixirLS проверьте вывод. Пожалуйста, также поделитесь настройками микшированного проекта, где хранить скомпилированные BEAM. Также укажите, как он пытался запустить приложение; описание «не удалось запустить наше приложение» слишком расплывчато. Если mix run или что-то подобное не удалось, это вряд ли может иметь что-то общее с выбранным редактором.   -  person Aleksei Matiushkin    schedule 06.08.2020
comment
Вам не нужно добавлять Edit каждый раз, когда вы вносите изменения. история сайта отслеживает изменения и показывает, что изменилось. Добавление [EDIT} вручную просто загромождает сообщение ненужным шумом.   -  person Ken White    schedule 06.08.2020
comment
Не могли бы вы попросить его обновить локальный (не докеризованный) OTP до 22? Создано с помощью: Elixir 1.10.0 и OTP 21.3 выглядит подозрительно.   -  person Aleksei Matiushkin    schedule 06.08.2020
comment
Результат elixir --version в его среде - Erlang/OTP 23 [erts-11.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] Elixir 1.10.4 (compiled with Erlang/OTP 21). Похоже, он использует последний одноразовый пароль. В любом случае, мы не хотим, чтобы он понижал или обновлял свой одноразовый пароль.   -  person Tsutomu    schedule 06.08.2020


Ответы (1)


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

person Custer Jesse    schedule 06.08.2020
comment
Да, каждый раз, когда я удаляю файлы расширений, он будет работать нормально, поэтому в конце я удалил поддержку Elixir и плагин отладчика. - person Custer Jesse; 17.08.2020