我不确定在哪里放置该错误,不老长寿药,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}
三个小时后...
我使用混合创建了一个新的凤凰项目,并且可以重现该问题。添加exrm后,我得到了相同的错误。我转而去酿酒厂,看同样的错误。我提出了一个有关酿酒厂的问题,希望能找到解决方案。 Issue 142 on distillery
编辑:
酒厂报告中有关此问题的其他详细信息:
$ uname -a
达尔文·安德烈斯(MBP)。 16.1.0 Darwin Kernel版本16.1.0:2016年10月13日星期四21:26:57 PDT;根目录:xnu-3789.21.3〜60/RELEASE_X86_64 x86_64
在主目录下的我的帐户完全拥有的开发树中,我至少有四个级别的权限。
最佳答案
TL; DR
此错误是由尝试编写一些构建工件时被拒绝的权限引起的。您需要使用分散性覆盖EXRM并检查文件/目录权限。
详细说明
错误eacces
表示Unix系统中的权限被拒绝,即,当您的发布任务试图写入某些已构建的文件时,这将收到OS拒绝的权限。CaseClauseError
表示EXRM源代码中的案例子句未处理可能性。
无论如何,不建议使用EXRM,您需要使用distillery覆盖它
关于node.js - **(CaseClauseError)没有匹配: :eacces - Building release with MIX_ENV=prod的case子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40833717/