相关问题:在 Node.js 中使用 Underscore 模块
有没有办法更改变量 Node.js 的REPL将最后一个返回值设置为?如果您可以将其从更改_
为__
或$_
,则可以将下划线模块全球化,这样您就不必在每个文件中将其设置为变量:https ://gist.github.com/3220108
相关问题:在 Node.js 中使用 Underscore 模块
有没有办法更改变量 Node.js 的REPL将最后一个返回值设置为?如果您可以将其从更改_
为__
或$_
,则可以将下划线模块全球化,这样您就不必在每个文件中将其设置为变量:https ://gist.github.com/3220108
我想出了一种使用本机 Noderepl
模块的方法。而不是仅仅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);
});
_
除非您想编辑源代码,否则我认为您无法更改。node.js REPL 似乎在lib/repl.js
; 如果你在图书馆里闲逛一下,你会看到这样的事情:
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;
相当于_ = ret
从 REPL 的提示符中说。
所以_
是硬连线的,除非你想破解 node.js 库,否则你无能为力。