【发布时间】:2019-03-14 02:37:43
【问题描述】:
我在 mocha 测试中收到“未处理的拒绝”消息,但我不知道问题的确切根源是什么,因为这是异步发生的。
我知道我可以为全局 unhandledRejection 事件添加一个事件监听器,例如:
process.on('unhandledRejection', function(reason) {
console.error(reason);
process.exit(1);
});
但这并没有真正的帮助,因为跟踪如下:
{ Error: ENOENT: no such file or directory, open '/tmp/testfile.json'
at Error (native)
cause:
{ Error: ENOENT: no such file or directory, open '/tmp/testfile.json'
at Error (native)
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/tmp/testfile.json' },
isOperational: true,
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/tmp/testfile.json' }
问题与节点的内置处理程序相同。没有回溯。
显然我没有得到正确的回溯,因为拒绝发生在本机 fs 模块中。 如果我尝试只运行发生此跟踪的测试,它根本不会发生。这可能是因为“早些时候”在某个地方设立了一个失控的承诺。指定的 /tmp/ 路径不存在于测试代码或实际实现代码中的任何位置。 testfile.json 确实存在,但不在该路径中。
我正在使用节点 6.5.0 运行 mocha 3.5.3。
那么问题来了:如何缩小范围以找到有问题的代码?
【问题讨论】:
-
指定的/tmp/路径在测试代码或实际实现代码中都不存在 -
testfile.json呢? -
那个确实存在。更新问题。
-
检查它在代码库中的使用位置并从那里继续。不知道
/tmp/可以从哪里得到,这可能并不重要。重要的是为什么使用了错误的路径。可能是因为您错误地依赖 CWD。span>
标签: node.js debugging promise mocha.js