无法在 nx-nestjs 项目中使用 TypeOrm:ERR_REQUIRE_ESM
Cannot use TypeOrm in nx-nestjs project: ERR_REQUIRE_ESM
我正在将我的 NestJS-TypeOrm 应用程序迁移到 monorepo(NX 工作区)。
每当我尝试 运行 应用程序时,我都会收到此错误:
C:\myproject\node_modules\@nrwl\node\src\executors\node\node-with-require-overrides.js:16
return originalLoader.apply(this, arguments);
^
Error [ERR_REQUIRE_ESM]: require() of ES Module C:\myproject\node_modules\@angular\core\fesm2015\core.mjs not supported.
Instead change the require of C:\myproject\node_modules\@angular\core\fesm2015\core.mjs to a dynamic import() which is available in all CommonJS modules.
at Function.Module._load (C:\myproject\node_modules\@nrwl\node\src\executors\node\node-with-require-overrides.js:16:31)
at ...
我调试了几个小时,并将问题追溯到 AppModule 中将我的实体“导入”到 TypeOrm:
import {Foo} from './foo.entity.ts';
@Module({
imports: [
TypeOrmModule.forRoot({...myConfig, entities: [Foo]}),
/*...*/
})
export class AppModule {/*...*/}
但也使用 forFeature()
会导致相同的错误:
import {Foo} from './foo.entity.ts';
@Module({
imports: [TypeOrmModule.forFeature([Foo])],
/*...*/
})
export class MyFeatureModule {/*...*/}
似乎问题可能是由于 nx/webpack 创建了一个包含所有代码的 main.js 文件,而之前 dist 文件夹单独包含所有代码文件。
人们建议在我的 tsconfig 中使用 "module": "commonjs"
,或在 package.json 中使用 "type": "module"
,但这没有任何作用:(
非常感谢任何解决方案想法
原来我是个白痴。
我的共享库包含一些 angular 代码,并且 TypeOrm 实体使用了该库中的一些枚举。由于 ebpack 将整个库编译在一个文件中,包括未使用的 angular 代码,然后它会尝试 require()
未使用的 angular 核心模块,这显然失败了...
结论:确保将共享 interfaces/enums 提取到专用的 TS/JS 库中,而不是将其放入 angular 库中。
我正在将我的 NestJS-TypeOrm 应用程序迁移到 monorepo(NX 工作区)。
每当我尝试 运行 应用程序时,我都会收到此错误:
C:\myproject\node_modules\@nrwl\node\src\executors\node\node-with-require-overrides.js:16
return originalLoader.apply(this, arguments);
^
Error [ERR_REQUIRE_ESM]: require() of ES Module C:\myproject\node_modules\@angular\core\fesm2015\core.mjs not supported.
Instead change the require of C:\myproject\node_modules\@angular\core\fesm2015\core.mjs to a dynamic import() which is available in all CommonJS modules.
at Function.Module._load (C:\myproject\node_modules\@nrwl\node\src\executors\node\node-with-require-overrides.js:16:31)
at ...
我调试了几个小时,并将问题追溯到 AppModule 中将我的实体“导入”到 TypeOrm:
import {Foo} from './foo.entity.ts';
@Module({
imports: [
TypeOrmModule.forRoot({...myConfig, entities: [Foo]}),
/*...*/
})
export class AppModule {/*...*/}
但也使用 forFeature()
会导致相同的错误:
import {Foo} from './foo.entity.ts';
@Module({
imports: [TypeOrmModule.forFeature([Foo])],
/*...*/
})
export class MyFeatureModule {/*...*/}
似乎问题可能是由于 nx/webpack 创建了一个包含所有代码的 main.js 文件,而之前 dist 文件夹单独包含所有代码文件。
人们建议在我的 tsconfig 中使用 "module": "commonjs"
,或在 package.json 中使用 "type": "module"
,但这没有任何作用:(
非常感谢任何解决方案想法
原来我是个白痴。
我的共享库包含一些 angular 代码,并且 TypeOrm 实体使用了该库中的一些枚举。由于 ebpack 将整个库编译在一个文件中,包括未使用的 angular 代码,然后它会尝试 require()
未使用的 angular 核心模块,这显然失败了...
结论:确保将共享 interfaces/enums 提取到专用的 TS/JS 库中,而不是将其放入 angular 库中。