升级NestJS 8与rxjs 7后报TS7016找不到rxjs声明文件报错
问题原因
RxJS v7 调整了项目的目录结构,类型声明统一内置在dist目录下,根目录不再保留index.ts文件,且RxJS v7开始官方自带完整的TypeScript类型定义,无需单独安装第三方@types/rxjs包。旧版本的@types/rxjs已停止维护,适配的是RxJS v6的目录结构,和v7不兼容,因此会触发TS7016报错。
解决方案
按优先级依次尝试以下操作:
- 第一步:卸载第三方类型包
执行命令移除旧的@types/rxjs依赖:
如果你使用yarn,执行:npm uninstall @types/rxjs --save-dev
使用pnpm则执行:yarn remove @types/rxjs -Dpnpm remove @types/rxjs -D - 第二步:校验tsconfig.json配置
确认配置文件中以下字段配置正确,避免类型查找逻辑异常:
同时检查是否存在手动配置的{ "compilerOptions": { "moduleResolution": "node", "allowSyntheticDefaultImports": true, "typeRoots": ["node_modules/@types"] } }paths字段指向rxjs,如有请删除对应配置。 - 第三步:清理依赖缓存重装
依次执行以下命令清理旧依赖、锁文件,再重新安装:rm -rf node_modules package-lock.json yarn.lock pnpm-lock.yaml npm install - 第四步(兜底方案):添加临时声明文件
如果以上操作都无法解决问题,在项目src目录下新建typings.d.ts文件,添加以下内容跳过类型校验:declare module 'rxjs';
额外提示:不要使用import xxx from 'rxjs/internal/xxx'这种私有路径的导入,统一用import { xxx } from 'rxjs'或者import { xxx } from 'rxjs/operators'这种官方公开的导出路径。
内容的提问来源于stack exchange,提问作者Матвей Иванов
相关产品推荐
相关产品推荐

