【发布时间】:2020-01-07 05:32:04
【问题描述】:
我有以下应用结构:
Application AApplication BCommon package
现在Application A 和B 在package.json 中添加了通用包:
{
dependencies: {
"commonPackage": "file:../../../commonPackage"
}
}
这两个应用程序都使用 React,以及 common 包,都添加了带有 npm 的 React,并且在我们开始使用 React 钩子之前它工作正常。
因为当我们开始的时候,我们得到了一个Invalid Hook Call Warning,因为有“多个 React 的副本”,所以为了避免这种情况,在 common 包中,react 依赖被移动到了peerDependencies,以便 react 实例使用来自应用程序而不是来自包。
当我们运行 A 和 B 这两个应用程序时,它在浏览器中运行良好,但是当我在控制台中运行 mocha 测试时,我得到:
ERROR in ../commonPackage/~/@uifabric/utilities/lib/customizations/Customizer.js
Module not found: Error: Can't resolve 'react' in 'D:\myProject\commonPackage\node_modules\@uifabric\utilities\lib\customizations'
这是来自我们使用的office-ui-fabric-react 包,但它似乎是一个更普遍的依赖解析问题。
项目是TypeScript,我们使用webpack为浏览器编译应用程序,tsc为单元测试编译。
我找到了一些答案,建议将公共包中的npm link react 到应用程序node_modules 中的react 包,但似乎不对,因为公共包被两个应用程序使用,只能解决问题一个。
【问题讨论】:
-
如果您的
mocha测试在commonPackage中,并且您需要 React 来共同进行测试,您可以使用devDependency。
标签: node.js typescript npm webpack office-ui-fabric