如何使链接组件 peerDepdencies 使用链接到的脚本的等效 node_modules?

IT技术 reactjs npm webpack
2021-05-14 02:56:02
  • 我在用 版本 3(版本相关,因为版本 3 中的新peerDependencies行为方式)。
  • 我有一个 名为“游戏”的应用程序和 称为“播放器”的组件。
  • webpack-dev-server用来运行“游戏”应用程序。
  • reactreact-dom是的依赖关系game的应用程序和peerDependencies所述的player组件。

我想将player组件链接game应用程序。

我已经做好了:

cd /player
npm link
cd /game
npm link player

当我运行webpack-dev-server程序时,我收到以下错误消息:

Hash: 09968e7401389f50049f
Version: webpack 1.12.2
Time: 339ms
chunk    {0} app.js, 0.14192ce06d8b6f8abb91.hot-update.js, app.css (app) 2.32 MB
     + 576 hidden modules

ERROR in ../player/index.js
Module not found: Error: Cannot resolve module 'react' in /player
 @ ../player/index.js 21:13-29

如何使player组件game ./node_modules用于peerDependences?

1个回答

经过一番挖掘,我在 webpack 文档中找到了一个解决方案:npm linked modules does not find their dependencies

只需将resolve.fallback(并且resolveLoader.fallback如果您的依赖项具有特定于加载器的逻辑,例如使用 CSS module)添加到您的 webpack 配置中:

resolve: {
    fallback: path.resolve(__dirname, './node_modules')
},
resolveLoader: {
    fallback: path.resolve(__dirname, './node_modules')
}

fallback设置将使 webpack loader 查找./node_modules任何无法解析的依赖项的本地路径,包括主应用程序本身的依赖项的依赖项。因此,所有peerDependencies主应用程序依赖项都将针对主应用程序进行解析./node_modules