React Native子包tsconfig路径配置后tsc报TS2307模块找不到错误问询
解决React Native子包tsconfig路径解析在tsc命令下的报错问题
你遇到的问题是VSCode和项目运行都能识别路径别名,但tsc命令执行时找不到模块,核心原因是tsc对tsconfig的读取逻辑和VSCode、Metro不同,以下是具体解决方法:
1. 调整子包tsconfig的路径配置
确保子包的tsconfig.json能适配单独编译场景,同时支持你需要的两种别名格式:
{ "compilerOptions": { "baseUrl": ".", // 指向子包根目录(packages/test-package) "paths": { "@app-content/*": ["./src/*"], "src/*": ["./src/*"] // 新增src/xxx格式的别名映射 } }, "include": ["__tests__/**/*", "src/**/*", "typings/*"] }
2. 根目录tsconfig同步子包路径(全局编译用)
如果习惯在根目录执行tsc检查整个项目,需要在根目录的tsconfig.json里添加子包的路径映射,让tsc能识别子包内的别名:
{ "compilerOptions": { "baseUrl": ".", "paths": { // 根目录自身的别名(如果有) "@root/*": ["./src/*"], // 子包的两种别名映射 "@app-content/*": ["./packages/test-package/src/*"], "src/*": ["./packages/test-package/src/*"] } }, "include": ["src/**/*", "packages/test-package/src/**/*", "typings/*"] }
3. 正确执行tsc命令
- 若仅检查子包代码,切换到子包目录执行:
cd packages/test-package tsc --project tsconfig.json
- 若在根目录检查子包,直接指定子包的配置文件:
tsc --project packages/test-package/tsconfig.json
4. 同步Metro的路径配置(可选但推荐)
虽然项目当前运行正常,但为了确保Metro和TypeScript的路径解析逻辑完全一致,在项目根目录的metro.config.js中添加别名配置:
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const path = require('path'); const customConfig = { resolver: { alias: { '@app-content': path.resolve(__dirname, 'packages/test-package/src'), 'src': path.resolve(__dirname, 'packages/test-package/src'), }, }, }; module.exports = mergeConfig(getDefaultConfig(__dirname), customConfig);
内容的提问来源于stack exchange,提问作者IshAsh
相关产品推荐
相关产品推荐

