gpt4 book ai didi

node.js - 来自 native 代码的 Mocha 测试中未处理的拒绝

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:03 25 4
gpt4 key购买 nike

我在 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' }

该问题与 Node 的内置处理程序相同。没有回溯。

显然我没有得到正确的回溯,因为拒绝发生在 native fs 模块中。如果我尝试仅运行发生此跟踪的测试,则它根本不会发生。这可能是因为“早些时候”在某个地方制定了失控的 promise 。指定的/tmp/路径在测试代码或实际实现代码中不存在。 testfile.json 确实存在,但不在该路径中。

我正在使用 Node 6.5.0 运行 mocha 3.5.3。

那么问题是:如何缩小范围以找到有问题的代码?

最佳答案

我不确定它是否有帮助,但您也可以从 unhandledRejection 监听器获取 Promise 作为参数,以便可能获得一些更有用的输出。文档 here

process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at:', p, 'reason:', reason);
// application specific logging, throwing an error, or other logic here
});

关于node.js - 来自 native 代码的 Mocha 测试中未处理的拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com