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

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

【问题讨论】:

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

标签: macos command-line node.js


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-03-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多