我正在使用Ubuntu 14.04并安装了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的计算机来运行此程序包?
完整源代码参考:
答案 0 :(得分:10)
问题是文件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
(十六进制模式下为node
)。你应该删除它。
解决方案:使用$ 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