为什么我无法运行node -e ".load ./script.js"
?
$ node -e '.load ./script.js'
[eval]:1
.load
^
SyntaxError: Unexpected token .
at Object.exports.runInThisContext (vm.js:53:16)
at Object.<anonymous> ([eval]-wrapper:6:22)
at Module._compile (module.js:410:26)
at node.js:578:27
at nextTickCallbackWith0Args (node.js:419:9)
at process._tickCallback (node.js:348:13)
我尝试使用.
转义\
,但这也不起作用。
答案 0 :(得分:0)
-e
标志告诉节点在提供的字符串上运行eval。这意味着它将作为纯JavaScript运行。 .load
是一个REPL命令,表示它不是javascript。 -e
也不会运行REPL,因此不会执行您想要的操作。
如果您只想从命令行运行脚本,则只需执行node path/to/script.js
要运行一个加载脚本的线性脚本,可以执行node -e "require('path/to/script.js')"
,但是这只会加载脚本,然后退出。节点将返回,并且什么也不会发生。使用预加载的数据运行REPL可能有几种方法,但是我喜欢这样做:
node -e "const repl = require('repl'); repl.start().context.script = require('path/to/script.js')"
我实际上是在批处理脚本中使用该脚本(因为我正在运行Windows),该脚本用于测试库。我只需要传递我想包含的所有脚本,它就会为我加载它们而启动REPL。