Node 18 框架内的 NestJS 导入问题

问题描述 投票:0回答:1

将 Node 从 14 更新到 18.18.2 LTS 后,我遇到了非常奇怪的错误。 我在后端使用 NestJS,在提到的更新之后我注意到很多错误,例如:

/backend/src/common/entities/base.service.ts:40
    @Inject() private fileService: FileService;
                                   ^
ReferenceError: file_service_1 is not defined
    at BaseObjectManager (/backend/src/common/entities/base.service.ts:40:36)
    at Object.<anonymous> (/backend/src/modules/object-manager/user/user.service.ts:26:64)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Function.Module._load (node:internal/modules/cjs/loader:960:12)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at Object.<anonymous> (/backend/src/modules/object-manager/user/user.controller.ts:11:1)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)

我可以通过将绝对导入路径更改为相对路径来轻松修复它:

示例:

来自

import { User } from 'src/modules/user/entities/user.entity';

import { User } from '../../../../user/entities/user.entity';

好吧,我知道解决方案,但这里的问题是我必须更改 1200 个文件...所以不可能手动完成。

我的 tsconfig 文件:

{
  "compilerOptions": {
    "noEmit": false,
    "module": "commonjs",
    "declaration": true,
    "target": "ES2021",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "strictNullChecks": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "incremental": true,
    "preserveWatchOutput": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "jsx": "react"
  },
  "include": ["src/**/*.ts", "src/**/*.tsx"],
  "exclude": ["node_modules/**", "dist/**"]
}

你还有其他解决办法吗? 我只是强调,相对路径和绝对路径的混合可以在 Node 14 上正常工作。 我尝试了很多解决方案,例如更改 Nest 版本、更改 tsconfig 文件等,但没有找到解决方案。

提前感谢您的帮助!

javascript node.js import nestjs tsconfig
1个回答
0
投票

我想你可以使用打字稿路径别名

src/*
映射到
./src/*

© www.soinside.com 2019 - 2024. All rights reserved.