在 linux 或 osx 上无法识别节点 bin 文件
Node bin file not being recognized on linux or osx
我一直在使用 Windows 中的 PyCharm 开发节点 cli 应用程序,它仅适用于 Windows,但总是 returns : No such file or directory
从 Linux 变成 运行。我已经能够使用一个相当基本的示例作为测试来重现该问题。尝试安装每个版本并注意从 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 上运行:
- 打开项目目录Linux
- 将
cli.js
重命名为 cli.old.js
- 创建一个名为
cli.js
的新文件
- 将旧文件的内容复制到新文件
当我从 Windows 发布到 npm 而不手动从 Linux 重新创建文件时,为什么它不会 运行 在 Linux 上?
Windows-based line endings 正在杀死你。完整的错误说,env: node\r: No such file or directory
因为 Windows 把 \r 放在那里(作为换行符的 \r\n 的一部分),但是 Linux 和 OSX 只使用 \ n 换行。
关于 NPM 的 github 问题以及几个可能的解决方法的讨论正在进行中:https://github.com/npm/npm/issues/2097
我一直在使用 Windows 中的 PyCharm 开发节点 cli 应用程序,它仅适用于 Windows,但总是 returns : No such file or directory
从 Linux 变成 运行。我已经能够使用一个相当基本的示例作为测试来重现该问题。尝试安装每个版本并注意从 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 上运行:
- 打开项目目录Linux
- 将
cli.js
重命名为cli.old.js
- 创建一个名为
cli.js
的新文件
- 将旧文件的内容复制到新文件
当我从 Windows 发布到 npm 而不手动从 Linux 重新创建文件时,为什么它不会 运行 在 Linux 上?
Windows-based line endings 正在杀死你。完整的错误说,env: node\r: No such file or directory
因为 Windows 把 \r 放在那里(作为换行符的 \r\n 的一部分),但是 Linux 和 OSX 只使用 \ n 换行。
关于 NPM 的 github 问题以及几个可能的解决方法的讨论正在进行中:https://github.com/npm/npm/issues/2097