在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
我还需要做些什么才能让这项工作成功吗?
答案 0 :(得分:1)
为什么我不能评估.load来启动node.js中的交互式脚本?
因为-e
用于评估 JavaScript 代码。交互式REPL的命令不是JavaScript,它们是REPL交互式命令。
This question询问如何在运行脚本之后进行交互,这不会回答“为什么”部分(这就是我发布上述内容的原因),但它的答案可能会给你一些选择-implied“......而我该怎么做?”部分。 : - )
答案 1 :(得分:1)
您可以使用自定义脚本从module:
启动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/to/load.js
将在load
下提供)