Last updated on

React 多实例问题

问题背景

最近在优化 awesome-toc 的开发环境

202304132139868

原因

简单说下问题是咋产生的

原来的项目是

node_modules
src
	content
		index.ts

现在建了一个 demo 用于快速开发 /src/content 里的效果

demo
	node_modules
	src
		main.ts
		App.tsx
	vite.config.ts
node_modules
src
	content
		index.ts

/demo/src/App.tsx 会直接引用 /src/conent/index.ts

/src/conent/index.ts 相关的逻辑有「引用的文件里有」

import React from 'react'

这里的 react 来源是 /node_modules 「寻找最近一层的 node_modules」

/demo/src/App.tsx 也有

import React from 'react'

这里的 react 来源是 /demo/node_modules

因此 react 会有两个来源

方案

目标:不能有两个 react,需要做合并

demo 效果构建是由 /demo 下的 打包工具驱动的「vite.config.ts」 是由 vite 去寻找的 最近的 node_modules

我们固定一个就好了,不用自动寻找最近的

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      react: path.join(__dirname, 'node_modules/react'),
    },
  },
})