无法使用#!/ usr / bin / env node

时间:2017-12-13 07:23:35

标签: node.js npm

我正在尝试编写自己的npm可执行文件,但是当我尝试运行可执行文件时在另一个项目中安装依赖项时,我看到了错误

$ node_modules/.bin/html-linter    
: No such file or directory

该文件确实存在并且顶部有节点shebang(我完全复制了tslint可执行文件的内容)

如果我称之为

$ node node_modules/.bin/html-linter

它完美无缺,但我不想这样做

我的可执行文件看起来像:

#!/usr/bin/env node

require('../lib/html-linter-cli');

路径很好,如果我在我的控制台中运行/ usr / bin / env节点它可以工作,如果我运行节点--version我得到正常输出。

如果你想从npm安装软件包,可以称之为html-linter

1 个答案:

答案 0 :(得分:1)

请参阅完整的错误消息(遗憾的是,您的终端中已被遮挡):

$ node_modules/.bin/html-linter
env: node\r: No such file or directory

\r表示你在shebang行有一个回车符,可能是由于Windows样式的行结尾(在你的情况下,这个字符导致你的终端重新启动该行,覆盖部分错误并制作很难看到)。 file命令确认了这一点。

$ file node_modules/.bin/html-linter
node_modules/.bin/html-linter: a /usr/bin/env node script text executable, ASCII text, with CRLF line terminators

解决方案:不要使用Windows行结尾(几乎所有)并使用Unix风格的LF结尾保存文件。任何体面的代码编辑器都应该有这个选项。