**(CaseClauseError)没有case子句匹配:: eacces - 使用MIX_ENV = prod构建版本

And*_*her 6 elixir-mix elixir node.js exrm phoenix-framework

我不知道在哪里放错误,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
Run Code Online (Sandbox Code Playgroud)

我的环境如下:

$ 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
Run Code Online (Sandbox Code Playgroud)

我添加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}
Run Code Online (Sandbox Code Playgroud)

三个小时后......

我用mix创建了一个新的凤凰项目,可以重现这个问题.一旦我添加了exrm,我得到了同样的错误.我转换到酿酒厂看到同样的错误.我在酿酒厂创造了一个问题,希望能找到解决方案.关于酿酒厂的第142期


编辑:

酿酒厂报告中有关此问题的其他详细信息:

$ uname -a Darwin Andreass-MBP.16.1.0 Darwin内核版本16.1.0:2016年10月13日星期四21:26:57 PDT 2016; root:xnu-3789.21.3~60/RELEASE_X86_64 x86_64

在我的主文件夹下,我的帐户完全拥有的开发树中至少有四个级别.

小智 0

长话短说

此错误是由于尝试写入某些构建工件时权限被拒绝引起的。您需要使用 distillery 覆盖 EXRM 并检查文件/目录权限。

长解释

错误eacces意味着在 Unix 系统中权限被拒绝,即,当您的发布任务试图写入某些构建文件时,会收到操作系统拒绝的权限。

表示CaseClauseErrorEXRM 源代码中的 case 子句未处理可能性。

不管怎样,EXRM 已被弃用,你需要用distillery覆盖它