能否从命令行运行JavaScript文件?

60
我有几个JS文件,所以不想在控制台窗口(Firefox和Chromium)中逐个复制粘贴它们,如果可能的话,我想从shell中调用它们。

每个JS文件都有测试函数,使用console.log显示它们是否正确。

在Chrome开发者工具中,您可以使用内容脚本。 - Jared Farrish
“控制台窗口”是什么意思,它是否与网页相关? - Bergi
我正在使用console.log在Firefox / Chromium控制台中编写消息,但我可以改用Document.write。 - user1243746
可能是在没有浏览器的情况下执行JavaScript?的重复问题。 - kenorb
Firefox 无头模式,兄弟 - Stack Underflow
6个回答

87

在使用Node.js的解决方案上进行扩展...

以下是来自命令行JavaScript页面的一些示例和截图。

Node REPL(Shell)

如果在命令行中输入node而没有参数,您将进入交互式Read-Eval-Print-Loop(REPL), 也称为Shell。在这里,您可以交互地输入JavaScript表达式并立即进行评估。

Node REPL (Shell)

从命令行评估JavaScript文件

创建一个包含以下内容的文件:

console.log('Hello, world');

在命令行中使用node来评估文件:

评估JavaScript文件


17
如果您的测试需要访问DOM,那么总有一个无界面(Webkit)浏览器PhantomJS可供使用。

14

我并不是说这是最好的解决方案,但它是可用选项之一。我只想提高意识,其中一个原因是Java运行JavaScript已经有很长时间了,因为它已经嵌入了JavaScript运行时。首先有Rhino,现在,Java SE 8配备了一个名为Nashorn的新引擎,它基于JSR 292和invokedynamic。 它通过invokedynamic绑定的调用站点提供更好的符合ECMA标准的JavaScript规范和更好的运行时性能。它可以用于从命令行运行JavaScript程序。要这样做,Oracle的JDK或OpenJDK的构建包括一个名为jjs的命令行工具。它可以在JDK安装的bin /文件夹中找到,以及众所周知的java、javac或jar工具。

jjs工具接受JavaScript源代码文件列表作为参数。考虑以下hello.js文件:

var hello = function() {
  print("Hello Nashorn!");
};

hello(); 

评估它就像这样简单:

$ jjs hello.js
Hello Nashorn!
$

想要了解更多详细信息,请参考官方文档http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html


已经点赞,但也许您可以将“Oracle Nashorn”更改为只是“Nashorn” ;) - Hugues M.
从Java 11开始,Nashorn已被弃用,并且在JDK 15中已被移除。它已被GraalJS / GraalVM所取代。 - Torc

7

是的,使用 node 是可以实现的。 只需创建一个 js 文件,编写一些代码,保存并进入您保存文件的目录,然后输入 node <您的文件名>。 完成了。 注意:您必须在系统上安装 node


6
你可以使用node.js来完成这个操作。你可以分别运行每个文件,但是我假设文件之间没有依赖关系。
如果你在Windows系统上,并且不想安装Node,可以参考这篇关于Windows命令行JavaScript的讨论。但是,对于标准化的JavaScript来说,Node可能是更好的选择(它使用v8 JavaScript引擎)。

还有来自Mozilla的SpidermonkeyRhino JavaScript解释器。 - glenn jackman

1

如果您急需在Windows上操作,只需在命令提示符中尝试以下命令行:

cscript /E:jscript myJavaScriptFile.js

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接