纱线 pnp 回退到默认要求
yarn pnp fallback to default require
我正在编写一些单元测试来检查 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
你有什么建议吗?
最好的解决方案是在 link:
protocol
中安装依赖项
yarn add --dev transport@link:./test/fixtures/transport
我正在编写一些单元测试来检查 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
你有什么建议吗?
最好的解决方案是在 link:
protocol
yarn add --dev transport@link:./test/fixtures/transport