首页 文章

无法使用#!/ usr / bin / env节点运行节点可执行文件

提问于
浏览
0

我正在尝试编写自己的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节点它可以工作,如果我运行node --version我得到正常输出 .

如果你想从npm安装包你可以,它叫做html-linter

1 回答

  • 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结尾保存文件 . 任何体面的代码编辑器都应该有这个选项

相关问题