节点bin文件无法在linux或osx上识别

时间:2015-01-26 04:54:46

标签: node.js command-line-interface

我一直在使用来自Windows的PyCharm开发节点cli应用程序,它仅适用于Windows,但在从Linux运行时始终返回: No such file or directory。我已经能够使用一个相当基本的例子作为测试重现该问题。尝试安装每个版本,并注意从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. 创建名为cli.js
  4. 的新文件
  5. 将旧文件的内容复制到新文件
  6. 当我从Windows发布到npm而不从Linux手动重新创建文件时,为什么它不能在Linux上运行?

1 个答案:

答案 0 :(得分:4)

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

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