2017-09-14 151 views
2

我正在使用的elm项目nixos我无法编译。这个项目为我使用macOS的同事编译成功;也许在我的机器上编译失败与我使用NixOS有关。在nixos上使用纱线运行时,elm-make无法编译

当我运行$ yarn start我得到以下端子输出:

$ yarn start 
yarn start v0.20.3 
$ webpack-dev-server --env dev 
env dev 
Project is running at http://0.0.0.0:3000/ 
webpack output is served from/
Content not from webpack is served from /home/matthew/backup/azara_work/platform/web/src 
404s will fallback to /index.html 
Running elm-make /home/matthew/backup/azara_work/platform/web/src/App.elm --yes --warn --debug --output /tmp/117814-7766-1wq3nh5.xanii6yldi.js 

,当我试图在http://0.0.0.0:3000/加载网页浏览器控制台显示以下错误:

VM1496:1 Uncaught Error: Module build failed: Error: Compiler process exited with error Compilation failed 
events.js:160 
     throw er; // Unhandled 'error' event 
    ^

Error: spawn /home/matthew/backup/azara_work/platform/web/node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin/elm-make ENOENT 
    at exports._errnoException (util.js:1018:11) 
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) 
    at onErrorNT (internal/child_process.js:367:16) 
    at _combinedTickCallback (internal/process/next_tick.js:80:11) 
    at process._tickCallback (internal/process/next_tick.js:104:9) 
    at Module.runMain (module.js:606:11) 
    at run (bootstrap_node.js:389:7) 
    at startup (bootstrap_node.js:149:9) 
    at bootstrap_node.js:504:3 

    at ChildProcess.<anonymous> (/home/matthew/backup/azara_work/platform/web/node_modules/node-elm-compiler/index.js:141:27) 
    at emitTwo (events.js:106:13) 
    at ChildProcess.emit (events.js:191:7) 
    at maybeClose (internal/child_process.js:891:16) 
    at Socket.<anonymous> (internal/child_process.js:342:11) 
    at emitOne (events.js:96:13) 
    at Socket.emit (events.js:188:7) 
    at Pipe._handle.close [as _onclose] (net.js:497:12) 
    at exports._errnoException (util.js:1018:11) 
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) 
    at onErrorNT (internal/child_process.js:367:16) 
    at _combinedTickCallback (internal/process/next_tick.js:80:11) 
    at process._tickCallback (internal/process/next_tick.js:104:9) 
    at Module.runMain (module.js:606:11) 
    at run (bootstrap_node.js:389:7) 
    at startup (bootstrap_node.js:149:9) 
    at bootstrap_node.js:504:3 

    at ChildProcess.<anonymous> (/home/matthew/backup/azara_work/platform/web/node_modules/node-elm-compiler/index.js:141:27) 
    at emitTwo (events.js:106:13) 
    at ChildProcess.emit (events.js:191:7) 
    at maybeClose (internal/child_process.js:891:16) 
    at Socket.<anonymous> (internal/child_process.js:342:11) 
    at emitOne (events.js:96:13) 
    at Socket.emit (events.js:188:7) 
    at Pipe._handle.close [as _onclose] (net.js:497:12) 
    at eval (eval at ./src/App.elm (http://0.0.0.0:3000/index.js:4316:1), <anonymous>:1:7) 
    at Object../src/App.elm (http://0.0.0.0:3000/index.js:4316:1) 
    at __webpack_require__ (http://0.0.0.0:3000/index.js:658:30) 
    at fn (http://0.0.0.0:3000/index.js:86:20) 
    at eval (eval at ./src/index.js (http://0.0.0.0:3000/index.js:4324:1), <anonymous>:7:13) 
    at Object../src/index.js (http://0.0.0.0:3000/index.js:4324:1) 
    at __webpack_require__ (http://0.0.0.0:3000/index.js:658:30) 
    at fn (http://0.0.0.0:3000/index.js:86:20) 
    at Object.0 (http://0.0.0.0:3000/index.js:4333:18) 
    at __webpack_require__ (http://0.0.0.0:3000/index.js:658:30) 

./src/App.elm 
Module build failed: Error: Compiler process exited with error Compilation failed 
events.js:160 
     throw er; // Unhandled 'error' event 
    ^

Error: spawn /home/matthew/backup/azara_work/platform/web/node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin/elm-make ENOENT 
    at exports._errnoException (util.js:1018:11) 
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) 
    at onErrorNT (internal/child_process.js:367:16) 
    at _combinedTickCallback (internal/process/next_tick.js:80:11) 
    at process._tickCallback (internal/process/next_tick.js:104:9) 
    at Module.runMain (module.js:606:11) 
    at run (bootstrap_node.js:389:7) 
    at startup (bootstrap_node.js:149:9) 
    at bootstrap_node.js:504:3 

    at ChildProcess.<anonymous> (/home/matthew/backup/azara_work/platform/web/node_modules/node-elm-compiler/index.js:141:27) 
    at emitTwo (events.js:106:13) 
    at ChildProcess.emit (events.js:191:7) 
    at maybeClose (internal/child_process.js:891:16) 
    at Socket.<anonymous> (internal/child_process.js:342:11) 
    at emitOne (events.js:96:13) 
    at Socket.emit (events.js:188:7) 
    at Pipe._handle.close [as _onclose] (net.js:497:12) 
@ ./src/index.js 2:12-32 
@ multi (webpack)-dev-server/client?http://0.0.0.0:3000 webpack/hot/dev-server ./src/index.js 

看来问题可能有与elm-make有关,因为它出现在两个错误中。我的路径上

$ which elm-make 
/home/matthew/.nix-profile/bin/elm-make 

这是一个不同的位置处错误报告它正试图找到elm-make/home/matthew/backup/azara_work/platform/web/node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin/elm-make)路径发现elm-make。我想知道这是否可能与问题有关。

在错误中列出的目录中,elm-make确实出现经由ls上市时在场:

$ ls /home/matthew/backup/azara_work/platform/web/node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin/ 
elm elm-make elm-package elm-reactor elm-repl 

然而,当我尝试运行yarn start的输出中列出的命令,除了与替换elm-make在此节点模块路径中的elm-make,我得到'没有这样的文件或目录'错误。

$ ./node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin/elm-make /home/matthew/backup/azara_work/platform/web/src/App.elm --yes --warn --debug --output /tmp/117814-7422-1p5ad15.q2uqqzd7vi.js 
-bash: ./node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin/elm-make: No such file or directory 

为什么试图运行时,可能我得到这个“没有这样的文件或目录”错误这个“节点模块” elm-make当通过ls上市时的可执行文件是清晰可见?

由于我的路径elm-make与'node-modules'下的路径位置之间的路径位置不同,是不是编译失败?也许纱线使用了错误的纱线。如果是这样,我怎样才能设置纱线使用正确的elm-make

如何才能让yarn start成功编译该项目?

建议非常感谢;我一直坚持这一点。

回答

3

我建议你让NIMOS的安装可选(莫名其妙)。通常最简单的方法是创建一个每个人都使用的shell.nix,并根据nix完全避免依赖nix。

elm-make不存在的原因是由于ELF解释器位于NixOS的不同位置。

尝试ldd ./node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin/elm-make

快速解决将是符号链接ls -la $(nix-build -A elmPackages.elm '<nixpkgs>')/bin所有的二进制文件到你的阴谋沙箱。

+1

创建符号链接'$ ln -s/home/matthew /。/ home/matthew/backup/azara_work/platform/web/node_modules/elm/Elm-Platform/0.18.0/.cabal-sandbox/bin“中的nix-profile/bin/elm-make'。谢谢! – mherzl