我正在尝试编写自己的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
答案 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结尾保存文件。任何体面的代码编辑器都应该有这个选项。