是否可以在不调用`node`的情况下运行Node.js脚本?

Jus*_*ake 29 macos command-line node.js

我喜欢javascript,所以当我听说Node.js是一个基于V8的Javascript运行时时,我很兴奋.我更喜欢在Javascript中继续我的shell脚本.我的问题是:如何在不调用的情况下运行我的脚本node ~/Scripts/myscript.js?在chmod +x我的脚本之后,它尝试作为bash脚本而不是Node.js javascript运行.

aki*_*ira 36

是什么让你当前的shell启动bash是你的当前shell(bash?)没有关于如何处理file.js的线索.这就是为什么unix的神发明了shebang:

字符序列由字符编号和感叹号(#!)组成,当它作为文本文件第一行中的前两个字符出现时.在这种情况下,类Unix操作系统中的程序加载器将第一行的其余部分解析为解释器指令,并使用指定为参数的任何命令行选项调用字符序列后指定的程序.

所以,在你的情况下,我会尝试

 #!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)

在脚本的顶部.您可以看到,例如在'inode'(交互式node.js)shell中应用了beeing,这可能是另一个触发脚本的选项.

https://github.com/bancek/node-interactive-shell/blob/master/inode.js

  • 实际上他应该使用`#!/ usr/bin/env node`.PS:以root身份安装节点是......不好主意,总是将它安装在`〜/ .local`中,还应该在那里安装npm.否则,必须sudo npm安装东西,你的节点包可以有安装后的脚本;) (24认同)