pnpm monorepo迁移后React类型版本不匹配问题求助
解决pnpm monorepo中React类型版本不匹配的问题
以下是针对你遇到的TypeScript识别@types/react版本错误的具体解决步骤:
明确子包依赖声明
确保packages/native的package.json中,@types/react和react都明确指定为16.x版本,且作为devDependencies;packages/web则对应指定18.x版本。示例:// packages/native/package.json { "devDependencies": { "@types/react": "^16.14.34", "react": "^16.14.0" } }强制子包使用本地类型文件
在packages/native的tsconfig.json中配置paths,让TypeScript强制使用当前包内的@types/react,避免向上查找根目录的高版本类型:{ "compilerOptions": { "paths": { "react": ["./node_modules/@types/react"], "@types/react": ["./node_modules/@types/react"] } } }或者通过
typeRoots限制类型查找范围:{ "compilerOptions": { "typeRoots": ["./node_modules/@types"] } }禁止pnpm提升@types/react依赖
在根目录的package.json中添加pnpm配置,阻止@types/react被提升到根目录,确保每个子包保留独立的版本:{ "pnpm": { "hoist": { "exclude": ["@types/react"] } } }清理缓存并重新安装
执行以下命令彻底清理缓存并重新构建依赖树:pnpm store prune pnpm install检查peer依赖配置
如果子包中有依赖其他内部包的情况,确保内部包的peerDependencies没有强制指定单一版本的react或@types/react,避免冲突。
内容的提问来源于stack exchange,提问作者Tom Sherman
相关产品推荐
相关产品推荐

