我已将节点检查器连接到正在运行的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'它告诉我它没有定义。知道如何使这个东西工作吗?我只想运行我的节点程序,然后通过命令行界面向它发出命令。
答案 0 :(得分:3)
@foreyez,
您的问题激发我创建一个npm模块,它允许您调试(通过命令行)正在运行的node.js应用程序,而无需设置断点或需要创建变量global
:
https://github.com/go-oleg/debug-live
希望有所帮助!
答案 1 :(得分:1)
它无法正常工作的原因是您的所有变量和函数都是模块(应用程序)的本地变量,并且您无法从全局上下文中访问它们。
如果要从任何地方访问它们(包括在断点处未停止时从控制台访问),可以将它们保存在全局范围内:
var express = require('express');
var app = express();
function test() {
console.log('yo');
}
app.listen(3000);
global.test = test;