nestjs如何在项目中配置路径别名

时间:2019-08-10 04:50:34

标签: nestjs

我在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可能会导致意外情况。

3 个答案:

答案 0 :(得分:1)

这项工作,我在工作:

  1. 修改我的“ tsconfig.json”
{
  "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"]
}
  1. 添加“ tsconfig-paths-bootstrap.js”文件
// tsconfig-paths-bootstrap.js

const tsConfig = require('./tsconfig.json');
const tsConfigPaths = require('tsconfig-paths');

tsConfigPaths.register({
  baseUrl: tsConfig.compilerOptions.outDir,
  paths: tsConfig.compilerOptions.paths,
});
  1. 修改“ nodemon.json”文件
{
  "watch": ["dist"],
  "ext": "js",
  "exec": "node  -r ./tsconfig-paths-bootstrap.js dist/main.js"
}
  1. 使用路径别名
import { userLoginJwt } from '~auth/jwt-names';

现在执行npm run start:dev错误已消失。

答案 1 :(得分:0)

src在编译后不可用,因为所有代码都移到了dist文件夹中。相反,您应该在tsconfig中执行的操作是将baseUrl设置为指向src,将outDir设置为指向dist,然后删除{{1 }}。我还建议阅读Typescript路径映射,以更好地了解正在发生的事情。

答案 2 :(得分:0)

  1. 更新您的package.json

"start:dev": "nest start --watch --exec 'node -r tsconfig-paths/register -r ts-node/register ./src/main.ts'"

  1. 使用npm run start:dev