** (CaseClauseError) нет совпадения с предложением case:: eacces - Сборка выпуска с MIX_ENV = prod

Я не уверен, где разместить эту ошибку, elixir, phoenixframework или nodejs.

Я пытаюсь создать свою первую релизную сборку с помощью elxir и phoenix. Во время сборки релиза я вижу следующую ошибку. Я просто не уверен, что это проблема версии / зависимости или что-то, что связано с nodejs, поскольку единственная информация, которую я мог найти, связанную с eacces, была связана с nodejs. Что мне не хватает в моей конфигурации?

Вот стек ошибок:

Building release with MIX_ENV=prod.
** (CaseClauseError) no case clause matching: :eacces
lib/exrm/utils/utils.ex:110: ReleaseManager.Utils.relx/5
lib/mix/tasks/release.ex:341: anonymous fn/4 in   Mix.Tasks.Release.do_release/1
lib/ex_unit/capture_io.ex:146: ExUnit.CaptureIO.do_capture_io/2
lib/ex_unit/capture_io.ex:119: ExUnit.CaptureIO.do_capture_io/3
lib/mix/tasks/release.ex:340: Mix.Tasks.Release.do_release/1
lib/mix/tasks/release.ex:78: Mix.Tasks.Release.do_run/1
(mix) lib/mix/task.ex:296: Mix.Task.run_task/3
(mix) lib/mix/cli.ex:58: Mix.CLI.run_task/2

Моя среда выглядит следующим образом:

$ elixir -v
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Elixir 1.3.4

$ npm --version
3.10.8

Я столкнулся с несколькими проблемами версии после добавления exrm, которые я решил, добавив к своим зависимостям следующее:

 {:exrm, git: "git://github.com/bitwalker/exrm.git"},
 {:relx, github: "erlware/relx", override: true},
 {:erlware_commons, github: "erlware/erlware_commons", override: true},
 {:cf, "~> 0.2.1", override: true}

Три часа спустя ...

Я создал новый проект Phoenix, используя смесь, и смог воспроизвести проблему. Как только я добавил exrm, я получил ту же ошибку. Затем я переключаюсь на винокурню, чтобы увидеть ту же ошибку. Я создал проблему на ликеро-водочном заводе в надежде найти решение. Проблема 142 на ликеро-водочном заводе


РЕДАКТИРОВАТЬ:

Дополнительные сведения по этому вопросу из отчета винокурни:

$ uname -a Дарвин Андреасс-MBP. 16.1.0 Ядро Дарвина, версия 16.1.0: четверг, 13 октября, 21:26:57 PDT 2016; корень: xnu-3789.21.3 ~ 60 / RELEASE_X86_64 x86_64

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


person Andreas Guther    schedule 27.11.2016    source источник
comment
Посмотри на эту страницу. erlang.org/doc/man/file.html выполняет поиск по eaccess. Вы увидите, что наиболее вероятная причина - недостаточные разрешения. Сообщите нам ОС и т.д.   -  person Onorio Catenacci    schedule 28.11.2016
comment
Вы уверены, что не получаете проблем от самого Erlang? Я вижу некоторые примечания о запуске Erlang на MacOSX (Jaguar) здесь: erlang.org/download/otp_src_R9C- 0.readme Вы можете убедиться, что Erlang работает правильно.   -  person Onorio Catenacci    schedule 29.11.2016
comment
Работает нормально с sudo.   -  person Panagiotis Panagi    schedule 11.12.2016


Ответы (1)


TL; DR

Эта ошибка вызвана отказом в разрешении при попытке записи некоторого артефакта сборки. Вам необходимо переопределить EXRM с помощью ликеро-водочного завода и проверить права доступа к файлам / каталогам.

Длинное объяснение

Ошибка eacces означает отказ в разрешении в системах Unix, т. Е. Когда ваша задача выпуска пыталась записать некоторый собранный файл, это получает разрешение, запрещенное ОС.

CaseClauseError указывает, что возможность не обрабатывается case clausule в исходном коде EXRM.

В любом случае, EXRM устарел, и вам нужно заменить его на ликеро-водочном заводе.

person Thiago Henrique    schedule 28.10.2019