是否可以在不调用“节点”的情况下运行 Node.js 脚本?

Posted

技术标签:

【中文标题】是否可以在不调用“节点”的情况下运行 Node.js 脚本?【英文标题】:Is it possible to run Node.js scripts without invoking `node`? 【发布时间】:2011-06-15 22:45:20 【问题描述】:

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

【问题讨论】:

恕我直言,这属于 ***.com @akira 我在这里发布它是因为它涉及工具使用而不是编程主题。我的问题是关于操作系统如何处理脚本文件,而不是关于如何编写脚本。 在 Geany 中实际上很容易做到这一点:***.com/questions/12464679/… 【参考方案1】:

使您当前的 shell 启动 bash 的原因是您当前的 shell(bash?)不知道如何处理 file.js。这就是为什么 unix 之神发明了shebang 的原因:

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

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

 #!/usr/bin/env node

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

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

【讨论】:

其实他应该用#!/usr/bin/env node。 PS:以 root 身份安装 Node 是……作为一个坏主意,始终将其安装在 ~/.local 中,还应该在那里安装 npm。否则必须 sudo npm 来安装东西,你的节点包可以有安装后脚本;) @Ivo Wetzel 我将如何将我的 Node.js 安装移动到 ~/.local?我应该卸载并重新安装吗?我使用“make”从源代码构建 卸载当前的,然后参考这个要点:gist.github.com/579814#file_xgd_freedesktop.org_style.sh 脚本完成运行后如何保持终端窗口打开?我注意到当我尝试在终端中运行脚本时,终端窗口通常会快速打开和关闭,而不是保持打开状态。 @AndersonGreen 打开一个新窗口然后cd 到您要运行的脚本目录,然后键入./YourScriptName 运行它。【参考方案2】:

您总是可以简单地创建一个为您运行节点的 shell 脚本。

或者,如果你想创建一个可以在没有安装 node.js 的环境中运行的脚本,你可以使用installer-maker。

【讨论】:

以上是关于是否可以在不调用“节点”的情况下运行 Node.js 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在不使用 socket.io 的情况下在节点中制作聊天应用程序

是否可以在不使用 express 作为 vue js 的后端的情况下使用纯节点 js? [关闭]

是否可以在不调用新活动的情况下获取对象值?

是否可以在不调用 open() 的情况下创建 CallOut 内容

是否可以在不运行 QEMU 的情况下将文件复制到 QEMU 映像?

是否可以在不调用数据库的情况下创建空IQueryable的实例?