** (CaseClauseError) нет совпадения с кейсом::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; root:xnu-3789.21.3~60/RELEASE_X86_64 x86_64
Я нахожусь как минимум на четырех уровнях в дереве разработки, полностью принадлежащем моей учетной записи, в моей домашней папке.
0 ответов
TL;DR
Эта ошибка вызвана отказом в разрешении при попытке записи некоторого артефакта сборки. Вам необходимо переопределить EXRM с помощью ликеро-водочного завода и проверить права доступа к файлам / каталогам.
Длинное объяснение
ошибка eacces
означает, что в Unix-системах в разрешении отказано, то есть, когда ваша задача выпуска пыталась записать какой-то построенный файл, это получает разрешение, запрещенное ОС.
В CaseClauseError
указывает, что возможность не обрабатывается case clausule в исходном коде EXRM.
В любом случае, EXRM устарел, и вам нужно преодолеть его с помощью ликеро-водочного завода.