3

我已将节点检查器连接到我正在运行的 node.js 程序。但我想通过控制台发出命令——不一定在断点上。例如,我的 server.js 程序中有全局变量和函数。例如:

var express = require('express');
var app = express();

function test() {
    console.log('yo');
}

app.listen(3000);

现在在节点检查器中,我进入控制台并输入“test()”,它返回“ReferenceError: test is not defined”,与全局变量相同,我输入“app”,它告诉我它没有定义。知道如何使这件事起作用吗?我只想运行我的节点程序,然后通过命令行界面向它发出命令。

4

2 回答 2

3

@foreyez,

您的问题启发了我制作一个 npm 模块,它可以让您调试(通过命令行)正在运行的 node.js 应用程序,而无需设置断点或需要创建变量global

https://github.com/go-oleg/debug-live

希望有帮助!

于 2013-08-02T05:28:42.683 回答
1

它不能按您预期工作的原因是您的所有变量和函数都是模块(应用程序)的本地变量,您无法从全局上下文中访问它们。

如果您想从任何地方访问它们(包括未在断点处停止时从控制台),您可以将它们保存在全局范围内:

var express = require('express');
var app = express();

function test() {
    console.log('yo');
}

app.listen(3000);

global.test = test;
于 2013-07-31T16:57:26.620 回答