2

相关问题:在 Node.js 中使用 Underscore 模块

有没有办法更改变量 Node.js 的REPL将最后一个返回值设置为?如果您可以将其从更改___$_,则可以将下划线模块全球化,这样您就不必在每个文件中将其设置为变量:https ://gist.github.com/3220108

4

2 回答 2

3

我想出了一种使用本机 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);
});

这是一个要点:https ://gist.github.com/jasoncrawford/6818650

于 2013-10-03T23:39:33.503 回答
1

_除非您想编辑源代码,否则我认为您无法更改。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 库,否则你无能为力。

于 2012-08-01T02:28:28.947 回答