节点bin文件在linux或osx上不被识别

我一直使用Windows中的PyCharm开发节点cli应用程序,它只能在Windows上工作,但总是返回: No such file or directory从Linux运行时: No such file or directory 。 我已经能够使用一个相当基本的例子作为一个testing重现这个问题。 尝试安装每个版本,并注意从Windows发布的版本无法在Linux或OSX上运行。

从Windows发布: npm -g install cli-test@1.0.0 && cli-test

从Linux发布: npm -g install cli-test@2.0.0 && cli-test

的package.json:

 { "name": "cli-test", "version": "0.0.1", "bin": { "cli-test": "./cli.js" } } 

cli.js

 #!/usr/bin/env node console.log('hello world!'); 

如果我编写这个代码,然后使用sudo npm -g install从Linux上的项目目录安装它,然后运行cli-test它会抛出上面提到的错误。 如果我从Windows做同样的控制台日志。

我可以通过使用以下步骤使它在Linux上工作:

  1. 在Linux上打开项目目录
  2. cli.js重命名为cli.old.js
  3. 创build一个名为cli.js的新文件
  4. 将旧文件的内容复制到新文件

当我从Windows发布到npm而不从Linux手动重新创build文件时,为什么它不能在Linux上运行?

基于Windows的行结尾正在杀死你。 完整的错误说, env: node\r: No such file or directory因为Windows放在\ r那里(作为\ r \ n换行的一部分),但是Linux和OSX只是使用\ n作为换行符。

有关NPM的github问题正在进行讨论,以及几个可能的解决方法: https : //github.com/npm/npm/issues/2097