我有打字稿,并使用别名。 这是tsconfig.json
的一部分"compilerOptions": {
"baseUrl": "./src",
...
},
通过设置基本网址,我可以更改
import User from "src/models/User.model.ts"
到
import User from "models/User.model.ts"
问题是tsc将src文件夹编译为dist文件夹,因此用户导入路径应更改为相对路径,如下所示:
"../models/User.model.js"
但是它没有改变,因此出现以下错误:
"models/User.model.js" not found
我搜索了答案,但是没有运气。
答案 0 :(得分:4)
打字稿问题对此进行了长时间的讨论,我似乎找不到比这更好的解决方案。
开发
npm i -save-dev tsconfig-paths/register
tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@src/*": ["src/*"],
},
}
}
package.json
"scripts": {
dev: "ts-node -r tsconfig-paths/register src/index.ts"
}
构建
npm i -save-d ttypescript @zerollup/ts-transform-paths
tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@src/*": ["src/*"],
},
}
"plugins": [
{
"transform": "@zerollup/ts-transform-paths",
}
],
}
package.json
"scripts": {
build: "ttsc -P ./tsconfig.json"
}
答案 1 :(得分:0)
package.json
部分
"build": "ttsc && babel dist -d dist",
ttsc
并不是一个错误,它是Typescript配置上的一个插件,用于更复杂的编译
tsconfig.json
部分
"outDir": "dist",
"baseUrl": "./",
"paths": {
"@/*": [
"./src/*"
],
"$/*": [
"./tests/unit/*"
]
},
"plugins": [
{
"transform": "typescript-transform-paths",
"afterDeclarations": true
}
],
.babelrc
的全部内容
{
"compact": false,
"retainLines": true,
"minified": false,
"inputSourceMap": false,
"sourceMaps": false,
"plugins": [
[
"module-resolver",
{
"root": ["./dist"],
"alias": {
"@": "./dist"
}
}
]
]
}