我正在使用Ubuntu 14.04,并使用以下命令安装了nodejsnpm:

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的计算机运行此程序包,我错过了什么或错过了什么配置?

完整的源代码引用:
  • npm:https://www.npmjs.org/package/mangarack
  • git:https://github.com/Deathspike/mangarack.js
  • 最佳答案

    问题是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
    

    09-25 17:20