一行以交互方式运行节点脚本?

rob*_*don 1 node.js

为什么我不能跑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)
Run Code Online (Sandbox Code Playgroud)

我尝试.用 a转义,\但这也不起作用。

bra*_*ack 5

-e标志告诉节点在提供的字符串上运行 eval。这意味着它以纯 javascript 的方式运行它。.load是一个 REPL 命令,这意味着它不是 javascript。-e也不运行 REPL,所以不会做你想做的。

如果你只想从命令行运行脚本,你可以这样做 node path/to/script.js

要运行加载脚本的单行程序,您可以执行node -e "require('path/to/script.js')",但这只会加载脚本,然后退出。node 将返回,并且似乎什么也不会发生。可能有几种方法可以使用预加载的数据运行 REPL,但我喜欢这样做:

node -e "const repl = require('repl'); repl.start().context.script = require('path/to/script.js')"
Run Code Online (Sandbox Code Playgroud)

我实际上在一个用于测试库的批处理脚本中(因为我正在运行 Windows)。我只需要传入我想要包含的任何脚本,它就会在加载它们的情况下为我启动 REPL。