的Linux的NodeJS全球NPM包“:没有这样的文件或目录”
我使用Ubuntu 14.04和已安装nodejs
和npm
有:的Linux的NodeJS全球NPM包“:没有这样的文件或目录”
sudo apt-get install nodejs npm
然后我做了一个符号链接,使包装使用node
解释(而不是nodejs
):
sudo ln -s /usr/bin/nodejs /usr/local/bin/node
我安装coffee-script
(用于测试目的)和我自己的包,mangarack
,具有:
sudo npm -g install coffee-script mangarack
当我运行coffee
(coffee-script
的一部分)时,该软件包将运行正常。如果我运行mangarack
,我将获得:
: No such file or directory.
我在package.json
如下:
"bin": {
"mangarack": "./bin/mangarack"
},
而且该文件包含:
#!/usr/bin/env node
require('../lib/cli/index');
我看着怎么coffee-script
做到了似乎我的require
声明是绝对错误的,所以我用console.log
声明替换了该声明以查看该文件是否会通常在node
运行。它没有。我错过或错过了什么 - 配置以启用基于Linux的机器来运行此软件包?
完整的源代码引用:
的问题是文件bin/mangarack
使用回车,这会导致错误在Linux环境。看我得到了什么:node
后
$ mangarack --help
env: node\r: No such file or directory
$ head -n 1 `which mangarack` | hexdump
0000000 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 6e
0000010 6f 64 65 0d 0a
0000015
通知(十六进制模式0d
)字\r
。你应该删除它。
解决方案:使用$ git config core.autocrlf
设置您的项目,然后再提交更改。看到https://help.github.com/articles/dealing-with-line-endings/
预期的结果后,修复应该是:
$ head -n 1 `which mangarack` | hexdump
0000000 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 6e
0000010 6f 64 65 0a
0000015
就是这样!默认情况下,Windows机器将使用\ r \ n作为换行符。当你提交Git时,因为通常提交Unix样式换行符的Git设置,所以这一切都很好。如果你发布到npm,那么你正在压缩并发送文件,从而得到\ r \ n发布。谢谢! – 2014-12-06 17:43:29
这很难从节点给出的反馈中理解,谢谢澄清它给我。 – moodboom 2015-11-22 18:48:48
如果你的编辑器插入回车,好了,你真的应该切换到一个真实的。或者找到改变行为的地方。 – 2014-12-06 14:16:18
事实上,我显然应该切换到真正的。 :-) – 2014-12-06 17:42:11