我有以下应用程序结构:
Application A
Application B
Common package
Now Application A
and B
有在package.json
通用包添加:
{
dependencies: {
"commonPackage": "file:../../../commonPackage"
}
}
两个应用程序都使用 React,以及通用包,都添加了 Reactnpm
,并且在我们开始使用 React hooks 之前它就起作用了。
因为当我们开始时,我们得到了一个无效挂钩调用警告 https://reactjs.org/warnings/invalid-hook-call-warning.html由于有“多个 React 副本”,因此为了避免这种情况,在公共包中,react 依赖项被移至peerDependencies
以便使用应用程序中的 React 实例而不是包中的实例。
当我们运行这两个应用程序时,它在浏览器中运行得很好A
and 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到应用程序中的react包node_modules
,但这似乎是错误的,因为公共包被两个应用程序使用,它只能解决一个问题。
在上面的例子中,我们最终得出了一个解决方案:
应用程序 A、B 和挂钩现在可以工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)