Reactjs 在项目中使用两个不同的React/React Dom版本
我处于一个非常奇怪的情况下,项目结构看起来像:Reactjs 在项目中使用两个不同的React/React Dom版本,reactjs,npm,webpack,Reactjs,Npm,Webpack,我处于一个非常奇怪的情况下,项目结构看起来像: 计划 小型项目1 小型项目2 节点单元 package.json 迷你项目本身就是在ruby容器中显示的react应用程序。因此,当用户转到/route1时,它将加载miniProject1 react页面。当他们转到/route2时,它会转到minipject2页面 我的任务是更新MiniProject2的react版本,但不干扰MiniProject1或进行任何可能干扰MiniProject1的更改 我按照如下方式安装react和rea
- 计划
- 小型项目1
- 小型项目2
- 节点单元
- package.json
"react-latest": "npm:react@^16.13.1",
"react-dom-latest": "npm:react-dom@^16.13.1",
因此,我可以在MiniProject2中导入最新版本
我面临的问题是react dom具有“react”对等依赖关系,它试图拉取项目react,而不是我的别名“react latest”,这很有意义,但现在我一直在试图找出如何强制react dom要求我的react latest别名,而不是默认的react对等依赖关系
我也对潜在的网页配置解决方案持开放态度
有什么想法吗?经过一些挖掘,我可以通过执行以下操作来强制react dom使用react latest: package.json
"react": "^16.3.2",
"react-dom": "16.3.3",
"react-dom-latest": "npm:react-dom@^16.13.1",
"react-latest": "npm:react@^16.13.1",
webpack.config.js
module: {
rules: [
{
test: /\/node_modules\/react-dom-latest\/.*.js/,
resolve: {
alias: {
react: path.resolve('./node_modules/react-latest')
}
}
}]},
然后在需要使用最新react版本的文件顶部,我导入react,如下所示:
import React from 'react-latest'
//or
import ReactDOM from 'react-dom-latest' //for your index
import React from 'react'
//or
import ReactDOM from 'react-dom' //for your index
对于需要使用旧react的文件,我导入react如下:
import React from 'react-latest'
//or
import ReactDOM from 'react-dom-latest' //for your index
import React from 'react'
//or
import ReactDOM from 'react-dom' //for your index
这就是所有需要做的
免责声明:不要这样做,除非你不得不这样做,也没有像我这样的选择。它会增加捆绑包的大小,因为您将引入两个不同版本的react和reactidom我认为我在我的项目中做了类似的事情。尝试以下操作:在webpack.config.js中,添加
resolve:{alias:{'react':path.resolve('./node\u modules/react')}
如前所述,这对我来说不起作用,但我将其更改为:react:path.resolve('./node\u modules/react latest'),它修复了project2,但破坏了project1(project1严重过时)