我使用的是Typescript(4.1.3),我开始在tsconfig.json中使用自定义路径。从那以后,当我导入任何.ts文件时,如果我不使用整个路径,就会得到错误:
错误:(138,33)TS2307:无法找到模块'pages/foo/bar'或其相应的类型声明。
为了解决这个问题,我必须添加前缀'src/',所以我得到'src/pages/foo/bar'。项目本身工作正常,即使有这个TS错误。
这是我的tsconfig。json文件
{
"compilerOptions": {
"allowJs": true,
"sourceMap": true,
"target": "es6",
"strict": true,
"declaration": false,
"noImplicitAny": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"module": "esnext",
"moduleResolution": "node",
"strictNullChecks": false,
"baseUrl": ".",
"paths": {
"foo": [
"bar.js"
]
},
"types": [
"quasar",
"node",
"cypress"
],
"lib": [
"es2018",
"dom"
]
},
"exclude": [
"node_modules"
],
"extends": "@quasar/app/tsconfig-preset"
}
compilerOptions.baseUrl
被前缀到import
语句中指定的路径,以创建路径相对到tsconfig.json
文件的位置
在您的情况下,模块bar.js与tsconfig.json
文件的路径是src/pages/foo/bar。所以你要么在compilerOptions.baseUrl
中指定./src
,要么在import
语句中指定完整的路径。
这似乎是您的配置baseUrl:"."
的问题,这意味着js模块解析从当前目录发生,这就是为什么您的导入投诉添加src目录。
确保将此配置指向src dir,然后所有导入解析都从该dir进行。示例:baseUrl:"./src"
详细信息:https://www.typescriptlang.org/tsconfig#baseUrl
添加"typescript-path-fix"到任务运行器管道中,或者在编译代码之前调用它
使用这个包来解决你的问题:https://www.npmjs.com/package/typescript-path-fix