使用yarn workspaces时tsc找不到apollo-server下的express声明文件
问题修复方案
1. 修正tsconfig错误配置
你当前graphql子包的tsconfig中设置了"baseUrl": "./src",但项目结构里子包根目录下直接存放index.ts,不存在src文件夹,会导致TypeScript模块解析路径偏移,无法正确识别已安装的@types/express类型包。
修改子包tsconfig.json如下:
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "outDir": "./dist", "strict": true, "incremental": true, "noUnusedLocals": true, "esModuleInterop": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, // 把baseUrl改为当前目录,没有别名需求也可以直接删除这行配置 "baseUrl": ".", // 新增typeRoots配置,确认类型包查找路径 "typeRoots": ["./node_modules/@types", "../../node_modules/@types"], "skipLibCheck": false }, "include": ["**/*.ts"], "compileOnSave": true }
2. 清理无用文件
你贴出的index.ts中没有引入express的代码,但报错指向第2行的import express语句,说明子包下存在其他未清理的测试用.ts文件,或者本地index.ts和你贴出的版本不一致,先删除所有无用的.ts文件,确认代码内容正确。
3. 适配Yarn 3 PnP依赖机制
Yarn 3默认启用PnP依赖管理,不会生成传统node_modules文件夹,TypeScript默认解析逻辑无法识别PnP环境下的依赖路径,按以下步骤适配:
- 根目录执行命令安装Yarn官方SDK:
yarn add -D @yarnpkg/sdks yarn sdks typescript - 执行完成后工具会自动更新tsconfig配置,添加PnP适配逻辑。
如果你不想适配PnP,可改用传统node_modules模式:在根目录新增.yarnrc.yml文件,写入以下内容:
nodeLinker: node-modules
之后删除根目录.yarn文件夹、yarn.lock文件,重新执行yarn install安装依赖即可。
4. 清理增量编译缓存
你开启了增量编译配置,旧缓存可能导致错误持续触发,修复后执行以下命令重新编译:
yarn workspace graphql tsc --build --clean yarn workspace graphql tsc --build
内容的提问来源于stack exchange,提问作者Bene
相关产品推荐
相关产品推荐

