我在nestjs项目的tsconfig.json中配置了路径别名,但运行时出错。
我试图像Angular一样进行配置,但是nestjs中出现错误
这是我的tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"paths": {
"~auth/*": ["src/auth/*"]
}
},
"exclude": ["node_modules"]
}
像这样使用它
import { userLoginJwt } from '~auth/jwt-names'
启动错误
$ npm run start:dev
[0] internal/modules/cjs/loader.js:584
[0] throw err;
[0] ^
[0]
[0] Error: Cannot find module 'src/auth/jwt-names'
抱歉,我在这里强调运行npm run start
可以很好地工作,但是运行npm run start:dev
可能会导致意外情况。
答案 0 :(得分:1)
这项工作,我在工作:
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./src",
"incremental": true,
"paths": {
"~auth/*": ["auth/*"]
}
},
"exclude": ["node_modules"]
}
// tsconfig-paths-bootstrap.js
const tsConfig = require('./tsconfig.json');
const tsConfigPaths = require('tsconfig-paths');
tsConfigPaths.register({
baseUrl: tsConfig.compilerOptions.outDir,
paths: tsConfig.compilerOptions.paths,
});
{
"watch": ["dist"],
"ext": "js",
"exec": "node -r ./tsconfig-paths-bootstrap.js dist/main.js"
}
import { userLoginJwt } from '~auth/jwt-names';
现在执行npm run start:dev
错误已消失。
答案 1 :(得分:0)
src
在编译后不可用,因为所有代码都移到了dist
文件夹中。相反,您应该在tsconfig
中执行的操作是将baseUrl
设置为指向src
,将outDir
设置为指向dist
,然后删除{{1 }}。我还建议阅读Typescript路径映射,以更好地了解正在发生的事情。
答案 2 :(得分:0)
package.json
"start:dev": "nest start --watch --exec 'node -r tsconfig-paths/register -r ts-node/register ./src/main.ts'"
npm run start:dev