【发布时间】:2021-02-01 06:22:59
【问题描述】:
我正在将 TypeScript 与 Nodejs 一起使用,并且正在使用 Jest 和 mongo-memory-server 测试我的 MongoDB 数据库。
我已经使用它一段时间了(在 Arch Linux 上),它工作得很好。
最近我尝试了 WSL (Ubuntu 20.04),奇怪的是,当我尝试使用 mongo-memory-server 调试任何测试时,它会立即卡住,就像它正在计算某些东西一样。当我暂停时,它在 emitHookFactory 和 async_hooks.js 上。
另外,mongo_killer.js 似乎正在调用堆栈上运行。
当我在 Linux 上尝试这个时,它又可以正常工作了。
我能做什么?
编辑: 所有测试都通过并且程序运行良好,这仅在调试时发生。
编辑 2: 我注意到一些非常奇怪的事情:如果我在“Step Over”出现时尽快按下,调试器不会卡住,并且工作正常。顺便说一句,我正在使用 VSCode 调试器。
【问题讨论】:
-
如果这可能是相关的,我最近在 Mongo 文档中注意到它不支持 WSL 的警告。没有进一步检查这是否意味着它不能保证工作或已知它不能工作。
-
@EstusFlask 感谢您的帮助,似乎可以在 WSL2 上安装 mongodb,如 microsoft 文档中所述:docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-database
-
感谢您的链接,我还没有考虑 WSL2,因为没有足够的理由,但我可能会考虑这些问题。如果您能够以这种方式对其进行整理,请考虑发布自我回答。还有其他关于 Mongo 和 WSL 的已回答问题,但它们处理的是 vanilla 安装,而不是像 mongo-memory-server 这样的派生包。
-
@EstusFlask 我认为这不是 MongoDB 的问题,因为所有测试都有效,并且程序运行良好,没有任何问题。另外,我已经更新了问题
-
我明白了。如果问题是 VSCode 特有的,请尝试以通常使用 Chrome 的方式调试 Jest,例如stackoverflow.com/questions/33247602/….
标签: node.js mongodb jestjs windows-subsystem-for-linux async.js