为什么我无法评估.load在node.js中启动交互式脚本?

在node.js中,您可以传递参数-i以获取交互式控制台,然后传递-e来评估JavaScript语句。

我试过跑步:

 $ node -i -e '.load ./someScript.js' .load someScript.js; ^ 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) 

我得到一个错误,但如果我尝试从交互式节点提示运行相同的东西,它加载得很好; 即

 > .load ./someScript.js 

还有什么我需要做的做这个工作?

为什么我无法评估.load在node.js中启动交互式脚本?

因为-e用于评估JavaScript代码。 交互式REPL的命令不是JavaScript,它们是REPL交互式命令。

这个问题询问如何在运行脚本之后进行交互,它不回答“为什么”部分(这就是为什么我已经发布上​​述),但它的答案可能会给你一些select,暗示“…我该怎么办?“ 部分。 🙂

您也许可以使用自定义脚本从模块启动REPL:

就像是:

 const repl = require('repl'), path = require('path'), location = process.argv[2], base = path.basename(location), clean = path.split('.')[0]; const r = repl.start('> '); Object.defineProperty(r.context, clean, { configurable: false, enumerable: true, value: require(location) }); 

所以,现在你可以做node loadModule /path/to/load.js ,根据path的底部,模块将可用( /path/to/load.js将在load下可用)