与节点REPL中的应用程序代码交互

时间:2012-09-17 15:43:04

标签: node.js read-eval-print-loop

像Rails这样的框架之一就是能够在命令行上与模型进行交互。作为node.js的新手,我经常发现自己将大量的应用程序代码粘贴到REPL中以使用对象。这很脏。

是否有一个神奇的子弹,更有经验的节点开发人员用来从node提示符中访问他们的应用程序特定的东西?解决方案是将整个应用程序或应用程序的某些部分打包成模块require() d?我仍然生活在一个巨大的土地上,所以把所有东西都拉出来虽然不可避免,但有点令人生畏。

提前感谢您提供的任何有用提示!

3 个答案:

答案 0 :(得分:1)

一个大文件的土地实际上是一个适合你想做的事情的好地方。 Nodejs也可以require代码本身的REPL,这将节省你的复制和粘贴。

以下是我的一个项目中的一个简单示例。在文件顶部附近做类似的事情:

function _cb() {
  console.log(arguments)
}

var repl = require("repl");
var context = repl.start("$ ").context;
context.cb = _cb;

现在只需在整个代码中添加上下文。 _cb是一个虚拟回调函数,用于处理需要一个函数调用(并查看它们将返回的内容)。

答案 1 :(得分:1)

似乎REPL API已经发生了很大的变化,这段代码对我有用:

  var replServer = repl.start({
    prompt: "node > ",
    input: process.stdin,
    output: process.stdout,
    useGlobal: true
  });
  replServer.on('exit', function() {
    console.log("REPL DONE");
  });

答案 2 :(得分:0)

您还可以查看此答案https://stackoverflow.com/a/27536499/1936097。如果文件直接从节点运行,则此代码将自动加载REPL,并自动将所有声明的方法和变量添加到上下文中。