相关问题:Using the Underscore module with Node.js
有没有办法更改变量Node.js'REPL将最后一个返回值设置为?如果您可以将其从_
更改为__
或$_
,则可以全局化下划线模块,这样您就不必将其设置为每个文件中的变量:{{3 }}
答案 0 :(得分:3)
我想出了一种使用本机Node repl
模块执行此操作的方法。不要只在命令行运行node
,而是将其放在console.js
之类的内容中,然后运行node console.js
:
var repl = require('repl')
var vm = require('vm');
var _;
var server = repl.start({
eval: function (cmd, context, filename, callback) {
try {
var match = cmd.match(/^\((.*)\n\)$/);
var code = match ? match[1] : cmd;
context._ = _;
var result = vm.runInThisContext(code, filename);
} catch (error) {
console.log(error.stack);
} finally {
_ = context._;
callback(null, result);
}
}
}).on('exit', function () {
process.exit(0);
});
答案 1 :(得分:1)
除非您想编辑来源,否则我认为您无法更改_
。 node.js REPL似乎在lib/repl.js
中实现;如果你在图书馆附近徘徊一点,你会看到like this:
self.context._ = self.context[cmd] = lib;
self.outputStream.write(self.writer(lib) + '\n');
self.context._ = ret;
self.outputStream.write(self.writer(ret) + '\n');
self.context
对象是REPL的全局上下文或命名空间(类似于浏览器中的window
),因此self.context._ = ret;
等同于从REPL的提示符中说出_ = ret
。 / p>
所以_
是硬连线的,除非你想破解node.js库,否则你无能为力。