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



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

是否有更有经验的节点开发人员使用灵丹妙药从node提示中访问其应用程序特定内容?解决方案是将整个应用程序或应用程序的一部分打包成要require()的模块吗?我仍然生活在一个大文件的土地上,所以把所有东西都拿出来虽然不可避免,但有点令人生畏。

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

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

这是我的一个项目的简单示例。在文件顶部附近执行类似操作:

function _cb() {
  console.log(arguments)
}
var repl = require("repl");
var context = repl.start("$ ").context;
context.cb = _cb;

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

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

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

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

最新更新