TypeScript配置baseUrl后paths不生效且引入mongoose报错如何解决
解决方案
问题1:本地./src/mongoose.ts优先命中,覆盖第三方mongoose依赖的修复
配置baseUrl: "./src"后,TypeScript解析非相对导入路径时会优先从src目录下查找匹配文件,因此本地的mongoose.ts会覆盖npm安装的第三方依赖。可二选一以下方案:
- 方案1(推荐,无后续兼容问题):重命名本地文件,将
./src/mongoose.ts改为mongoose.client.ts/feathers.mongoose.ts等不与第三方包重名的名称 - 方案2(需保留原文件名时使用):在
tsconfig.json的compilerOptions中新增paths配置,手动指定mongoose的解析路径,注意路径是相对于baseUrl的相对路径:
{ "compilerOptions": { "baseUrl": "./src", "paths": { "mongoose": ["../node_modules/mongoose"], // 其余自定义路径别名可继续在此处添加 } } }
问题2:TS2614报错的修复
该报错是因为Mongoose是mongoose模块的默认导出成员,不是命名导出成员,可二选一以下方案:
- 方案1(推荐,符合模块导出规范):调整导入写法
把原导入语句:
import {Model, Mongoose} from 'mongoose'
修改为:
import Mongoose, {Model} from 'mongoose'
- 方案2(需保留原导入写法时使用):在
tsconfig.json的compilerOptions中开启兼容配置:
{ "compilerOptions": { "esModuleInterop": true, "allowSyntheticDefaultImports": true } }
开启后TypeScript会兼容CommonJS模块的导出规则,支持混合使用默认导出和命名导出写法。
内容的提问来源于stack exchange,提问作者Sibtain Wani
相关产品推荐
相关产品推荐

