我正在使用Ubuntu 14.04,并使用以下命令安装了nodejs
和npm
:
sudo apt-get install nodejs npm
然后,我做了一个符号链接(symbolic link),使程序包可以使用
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环境中导致错误。看看我得到了什么:
$ 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