将 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 文件等,但没有找到解决方案。
提前感谢您的帮助!