我一直在使用来自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上使用它:
cli.js
重命名为cli.old.js
cli.js
当我从Windows发布到npm而不从Linux手动重新创建文件时,为什么它不能在Linux上运行?
答案 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