【问题标题】:Node bin file not being recognized on linux or osx在 linux 或 osx 上无法识别节点 bin 文件
【发布时间】:2015-01-26 04:54:46
【问题描述】:

我一直在使用来自 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!');

如果我编写此代码,然后使用 Linux 上项目目录中的 sudo npm -g install 安装它,然后运行 ​​cli-test 它会引发上述错误。如果我从 Windows 执行相同操作,它会正确记录控制台。

我可以通过以下步骤让它在 Linux 上运行:

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

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

【问题讨论】:

    标签: node.js command-line-interface


    【解决方案1】:

    基于 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

    【讨论】:

    • 感谢您指出这个问题,我永远不会自己偶然发现它。否则处理和追踪问题非常令人沮丧。
    • 事实证明我可以将整个项目设置为使用 LF 行分隔符,并且我在 pycharm 中更改了默认值。
    • 我也使用 Windows 开发,在 linux 中安装时遇到了同样的问题:运行 bin 文件时没有这样的文件或目录。在网上疯狂寻找答案 3 天后,这篇文章为我节省了很多! Npm 应该在他们的文档中提及:从 Windows 运行 npm publish 时发出警告
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多