我正在使用 yarn v2 工作区,我的工作区之一是使用create-react-app
/构建的前端react-scripts
。我想在前端应用程序中启用绝对导入,所以我可以做类似的事情,import Button from 'components/Button'
而不是import Button from '../../../components/Button'
. 请注意,我的问题与跨工作区导入无关。
我已按照CRA 文档中的说明启用绝对导入,并且一切正常,除了tsc
:
✅ 应用程序运行
✅ 应用程序构建
✅ 测试通过
❌
yarn tsc --noEmit
在任何绝对导入上都会出现这样的错误:error TS2307: Cannot find module 'components/Button' or its corresponding type declarations.
这也会导致我的编辑器(vscode)中的 import 语句下出现红色波浪线。
我的项目结构是这样的:
package.json
tsconfig.json
workspaces/
- backend
- frontend
- package.json
- tsconfig.json
- src/
- components/Button.tsx
- pages/PageWithAButton.tsx
这是根tsconfig.json
:
{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true
}
}
还有前端tsconfig.json
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"jsx": "react-jsx",
"baseUrl": "src"
},
"include": ["src"],
"references": [{ "path": "../shared" }]
}
我从根目录使用这个命令调用 tsc:
yarn tsc --noEmit --jsx preserve
如何让 tsc 解析绝对导入?