Mocha测试突然停止:找不到模块“ pg-native”

时间:2018-08-28 08:21:46

标签: node.js mocha sequelize.js

我们的摩卡测试突然停止,并在控制台上显示以下消息:

Cannot find module `pg-native`

没有显示堆栈跟踪,mocha不会呈现测试的正常输出。测试立即停止。

如果我禁用有问题的测试,则所有测试都将正常运行。

安装pg-native可以消除该错误,但是随后mocha只是挂在那一点。

1 个答案:

答案 0 :(得分:3)

根据this issue,此问题是由于运行某些东西会深入记录的顺序而导致的。

例如

expect(myObject).to.deep.equal(mySequelizeInstance);

更改为

expect(myObject).to.deep.equal(mySequelizeInstance.toJSON());

会解决

为什么?

上述行为有两个原因

  1. 序列化记录将覆盖native getters,因此遍历某些属性将导致执行代码。在这种情况下,这些属性之一最终落入一个兔子洞,导致require('pg-native')被执行(因此也会出错)
  2. 对象包含循环引用,因此代码会在遍历无限引用时挂起。留得足够长的时间,它最终将在耗尽堆栈时失败。