给定以下目录 struct :

my-project
|
|-- node_modules
    |
    |-- react
    |-- module-x
        |
        |--node_modules
            |
            |--react

你可以看到my-projectmodule-x都需要react .我的问题与this question上描述的相同,但建议将react从包中移除.json依赖项.我这样做,只要module-x中没有安装node_模块,它就可以正常工作,因为Webpack将使用React from my-project.但是,如果我正在开发module-x,并且安装了node_模块,那么Webpack的使用将从my-projectmodule-x中进行react .

有没有一种方法可以让Webpack确保只使用一个React实例,即使它在两个不同的级别上都是必需的?

我知道我可以在开发时将module-x保存在一个单独的目录中,但似乎我必须发布它,然后在my-project中安装它来测试它,这不是很有效.我想大概有npm link个,但没有运气,因为它仍然在module-x中安装了node_模块.

This here听起来和我面临的挑战很像,但npm dedupe或Webpack的重复数据消除选项似乎不起作用.我可能不了解一些重要的细节.

推荐答案

使用npm link时通常会出现此问题.链接模块将在自己的模块树中解析其依赖关系,这与需要它的模块树不同.因此,npm link命令安装peerDependenciesdependencies.

可以使用resolve.alias强制require('react')解析为React的本地版本.

resolve: {
  alias: {
    react: path.resolve('./node_modules/react'),
  },
},

Reactjs相关问答推荐

使用useEffect挂钩获取数据

CreateBrowserRouter将props 传递给父组件以验证权限

在Next.js中实现动态更改的服务器组件

使用VITE的Reaction应用程序的配置是否正确?

在react上隐藏源映射

React useEffect 问题...异步函数内的变量正在获取延迟的更新值

React redux 工具包 useGetFilterProductsQuery 和 useGetFilterProductsByCategoriesQuery 未定义为函数

MERN,将动态列表中的元素插入数组

在 golang 服务器中刷新或直接 url 路径时响应 404

React Native - 如何处理错误带有有效负载的NAVIGATE操作..未被任何导航器处理?

在 React 中将 MUI 样式外包到单独的文件中?

redux 工具包使用中间件构建器函数时,必须返回一个中间件数组

无法读取未定义的属性(读取值)...TypeError:无法读取未定义的属性(读取值)

臭名昭著的测试未包含在 act(...) 中

当 React 中的状态发生变化时如何停止重新加载谷歌 map ?

将 useState 设置为组件内部的值

getAttribute 函数并不总是检索属性值

如何修复 Next.js 13 中类型 AppRouterInstance 上不存在 x?

如何将 id 从页面传递到另一个页面?

如何从另一个切片中的不同切片获取状态并对其进行处理?