相关疑难解决方法(0)

如何在node.js中输出深层堆栈跟踪?

发生正常异常时,会输出如下所示的堆栈跟踪:

util.js:38
      case '%s': return String(args[i++]);
                        ^
TypeError: Cannot convert object to primitive value
    at String (unknown source)
    at util.js:38:25
    at String.replace (native)
    at Object.<anonymous> (util.js:35:23)
    at Object.<anonymous> (console.js:25:36)
    at EventEmitter.<anonymous> (/project/src/routines/debug/boot.js:16:21)
    at EventEmitter.emit (/project/node_modules/eventemitter2/lib/eventemitter2.js:319:22)
    at /project/src/bootstrap.js:15:14
    at /project/src/util/routineloader.js:36:11
    at /project/src/util/routineloader.js:47:6
Run Code Online (Sandbox Code Playgroud)

哪个非常有帮助.当我在某处做以下事情时:

process.on('uncaughtException', function(err) {
        console.trace();
        throw err;
    });
Run Code Online (Sandbox Code Playgroud)

我只得到:

Trace: 
    at EventEmitter.<anonymous> (/project/src/routines/debug/exceptions.js:4:17)
    at EventEmitter.emit (events.js:88:20)
Run Code Online (Sandbox Code Playgroud)

这根本没有用.

如何让它返回整个堆栈跟踪,就像原始堆栈跟踪一样?

javascript debugging stack-trace node.js

21
推荐指数
2
解决办法
8543
查看次数

如何在node.js中记录堆栈跟踪

寻找一个处理堆栈跟踪的node.js包,类似于在RoR中完成此操作的方式:

Rails:记录异常的整个堆栈跟踪

logging stack-trace node.js

20
推荐指数
3
解决办法
2万
查看次数

在JavaScript中获取当前堆栈跟踪

如何从JavaScript打印堆栈跟踪?

答案如何在抛出异常时获取Javascript堆栈跟踪?处理抛出异常,但我需要打印堆栈跟踪来调试内存泄漏.

基本上我有一个相同的问题,如在Java中获取当前堆栈跟踪,但对于JavaScript.

以及如何在Node.js中打印堆栈跟踪?是类似的,但它是Node.js,我想知道JavaScript,更一般地说,如果它是不同的.

javascript node.js

14
推荐指数
3
解决办法
7533
查看次数

在node.js中,如何判断发出事件的来源?

有没有办法从事件处理程序回调中判断哪个函数和/或对象发出(调用)该事件?

这是一个示例程序:

var EventEmitter, ee, rand, obj;
EventEmitter = require("events").EventEmitter;

ee = new EventEmitter();
ee.on('do it', cFunc);

obj = {
    maybeMe:    true,
    emitting:   function() {
                    ee.emit('do it');
                }
}
function aFunc() {
    ee.emit('do it');
}
function bFunc() {
    ee.emit('do it');
}
function cFunc() {
    console.log('Who called me to do it?  aFunc or bFunc or obj (obj.emitting)?');
}

rand = Math.random(); 

if (rand < .3) {
    aFunc();
} else if (rand < .6) {
    bFunc();
} else {
    obj.emitting();
}
Run Code Online (Sandbox Code Playgroud)

另外,如果发出的事件的源来自内置模块的 …

javascript node.js

6
推荐指数
1
解决办法
1968
查看次数

从外部获取正在运行的 Node js 的当前堆栈跟踪

我的生产服务器上有一个节点应用程序会定期达到 100%。我希望能够向节点进程发送信号,该信号将为我提供堆栈跟踪,以便我可以找到代码中的问题所在。有什么简单的方法可以做到这一点吗?

我的服务器是 ubuntu 14.04.2,我正在运行节点 0.12.2

node.js

6
推荐指数
1
解决办法
3148
查看次数

如何在node.js中使用stack trace记录错误?

我一直在尝试调试我的节点应用程序,以便在我的日志中找到错误的来源,只显示为" Error: Can't set headers after they are sent",没有跟踪信息或任何上下文.

碰巧,我想我现在已经解决了这个......我正在使用connect-timeout并且我正在继续处理传递给异步网络操作的回调res.send(),尽管req.timedout已经设置为'true' ,回调最终会尝试执行connect-timeout在网络运营期间.

但我仍然无法理解为什么我的日志没有显示此错误的跟踪信息.在我的代码中返回错误的任何地方我将其记录到控制台:

console.log(err);
Run Code Online (Sandbox Code Playgroud)

如果跟踪的可用信息err的对象,这似乎被放置在err.stack,不应该上述声明转储全部内容err(包括err.stack)到控制台日志?我的理解是,通过上述操作,我不会丢失任何信息,例如:

console.log(err.stack);
Run Code Online (Sandbox Code Playgroud)

但是像这样的帖子似乎暗示了其他情况(虽然链接的帖子现在已经更新).

我实际上更进一步,并添加一些相关的文本,以帮助找到错误:

console.log('error in dodgyFunction:', err);
Run Code Online (Sandbox Code Playgroud)

但尽管如此,我仍然只是" Error: Can't set headers after they are sent",没有任何上下文我会说.这是因为这个控制台错误消息是在外部库中输出的(比如express)?我认为外部库应该将错误发送回主代码进行相应的处理?

编辑:这是我将错误和超时检查放在传递给异步操作的回调函数顶部的示例:

var execFile = require('child_process').execFile;
execFile('dodgycommand', options, function(error, stdout, stderr) {
    if (req.timedout) {
        console.log('timeout detected whilst running dodgycommand, so aborting...');
        return;
    }
    if (error) { …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling node.js console.log

6
推荐指数
3
解决办法
3万
查看次数

Node.js全局定制require函数

我试图修改require这样的

require = function (path) {
    try {
        return module.require(path);
    } catch (err) {
        console.log(path)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,此修改的范围仅在当前模块中.我想全局修改它,因此require该模块的每个模块也将获得相同的require函数副本.

基本上,我想SyntaxError知道哪个文件有问题.我似乎找不到任何其他选择.如果我把module.requiretry/catch块中,我能得到这引起了文件名SyntaxError.

module node.js

5
推荐指数
1
解决办法
2448
查看次数