我正在编写一些单元测试来检查是否my-module
正确加载了用户区模块external-module
:
const myMod = require('my-module')
myMod( { load: 'external-module' } )
现在我遇到了错误:
Your application tried to access transport, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. Required package: transport Required by: /Users/mspigolon/workspace/pino/test/ Require stack: - /Users/mspigolon/workspace/pino/test/transport.test.js
这是响亮而清晰的,因为测试会在运行时创建node_modules
文件夹中的依赖项,并且yarn
在安装阶段不会对其进行处理。
await symlink(
join(__dirname, 'fixtures', 'transport'),
join(__dirname, '..', 'node_modules', 'transport')
)
我找不到一种方法yarn@3.0.1
来回退到文件系统。
我阅读了有关PnPApi的信息,但我没有弄清楚如何使用它们来加载在运行时创建的这个依赖项。你可以帮帮我吗?这是正确的选择还是您看到了更好的方法?
我也尝试过pnpIgnorePatterns选项,但它忽略了整个文件,而不仅仅是一个文件require
在我看来,另一种解决方案是发布test-transport-module
并安装它,但我会避免它。
我yarnrc
的很简单:
yarnPath: ".yarn/releases/yarn-berry.cjs"
nodeLinker: pnp
pnpMode: loose
你有什么建议吗?