Javascript Linux NodeJS全局NPM包“:没有这样的文件或目录;
我正在使用Ubuntu14.04,安装了Javascript Linux NodeJS全局NPM包“:没有这样的文件或目录;,javascript,linux,node.js,npm,Javascript,Linux,Node.js,Npm,我正在使用Ubuntu14.04,安装了nodejs和npm: sudo apt-get install nodejs npm 然后我创建了一个符号链接,使包能够使用节点解释器(而不是节点): 我安装了coffee脚本(用于测试目的)和我自己的软件包mangarack,带有: sudo npm -g install coffee-script mangarack 当我运行coffee(属于coffee脚本的一部分)时,该包将正常运行。如果我运行mangarack,我将获得: : No suc
nodejs
和npm
:
sudo apt-get install nodejs npm
然后我创建了一个符号链接,使包能够使用节点
解释器(而不是节点
):
我安装了coffee脚本
(用于测试目的)和我自己的软件包mangarack
,带有:
sudo npm -g install coffee-script mangarack
当我运行coffee
(属于coffee脚本的一部分)时,该包将正常运行。如果我运行mangarack
,我将获得:
: No such file or directory.
我的包.json中有以下内容:
"bin": {
"mangarack": "./bin/mangarack"
},
该文件包含:
#!/usr/bin/env node
require('../lib/cli/index');
我查看了coffee script
是如何完成的,似乎我的require
语句是完全错误的,所以我用console.log
语句替换了它,以查看文件是否会在节点中实际运行。没有。我错过了什么或错过了配置以使基于Linux的机器运行此软件包
完整源代码参考:
- npm:
- 吉特:
问题在于文件bin/mangarack
使用回车符,这在linux环境中会导致错误。看看我得到了什么:
$ 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
注意节点
之后的字符\r
(0d
在十六进制模式下)。你应该移除它
解决方案:使用$git config core.autocrlf
设置项目,然后提交更改。看
修复后的预期结果应为:
$ 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时,一切都很好,因为Git设置通常提交Unix风格的换行符。如果您发布到npm,则您正在压缩并发送文件,从而获得\r\n发布。谢谢这很难从node给出的反馈中理解,感谢您为我澄清。
$ 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