nestia
nestia copied to clipboard
Issues with NX 21 and 22
Nestia: 8.1.0 Typia: 9.7.2
After updating to NX 21, I'm facing an error that is
Module build failed (from ../../node_modules/ts-loader/index.js):
TypeError: program.getCompilerOptions is not a function
at transform (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transform.js:10:37)
at before (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nx/js/src/utils/typescript/load-ts-transformers.js:39:43)
at /Users/sergiofernandez/Repositories/milu-web/node_modules/@nx/js/src/utils/typescript/load-ts-transformers.js:126:47
at /Users/sergiofernandez/Repositories/milu-web/node_modules/@nx/webpack/src/plugins/nx-webpack-plugin/lib/compiler-loaders.js:44:79
at Array.map (<anonymous>)
at getCustomTransformers (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nx/webpack/src/plugins/nx-webpack-plugin/lib/compiler-loaders.js:44:65)
at getCustomTransformers (/Users/sergiofernandez/Repositories/milu-web/node_modules/ts-loader/dist/instances.js:292:12)
at initializeInstance (/Users/sergiofernandez/Repositories/milu-web/node_modules/ts-loader/dist/instances.js:261:37)
at successLoader (/Users/sergiofernandez/Repositories/milu-web/node_modules/ts-loader/dist/index.js:26:40)
at Object.loader (/Users/sergiofernandez/Repositories/milu-web/node_modules/ts-loader/dist/index.js:23:5)
seems that NX changed the way transformers were applied and now nestia/typia is going through this code and fails.
my NX build step looks like this
"targets": {
"build": {
"executor": "@nx/webpack:webpack",
"outputs": ["{options.outputPath}"],
"options": {
"target": "node",
"compiler": "tsc",
"outputPath": "dist/apps/backend",
"main": "apps/backend/src/main.ts",
"transformers": [
"typia/lib/transform",
{
"name": "@nestia/core/lib/transform",
"options": {
"validate": "assert",
"stringify": "assert"
}
}
],
"tsConfig": "apps/backend/tsconfig.app.json",
"assets": ["apps/backend/src/migrations", "apps/backend/src/assets"],
"webpackConfig": "apps/backend/webpack.config.js"
},
i'm not sure if i longer need transformers I've been using this for 2 years, but if i remove that piece I have tons of errors like this one
ERROR in ./src/modules/tenant-admin/tenant-admin.controller.ts
Module build failed (from ../../node_modules/ts-loader/index.js):
TypeError: Cannot read properties of undefined (reading '0')
at get_name (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transformers/MethodTransformer.js:54:67)
at /Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transformers/MethodTransformer.js:44:22
at MethodTransformer.transform (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transformers/MethodTransformer.js:20:73)
at NodeTransformer.transform (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transformers/NodeTransformer.js:13:49)
at try_transform_node (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transformers/FileTransformer.js:43:54)
at iterate_node (/Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transformers/FileTransformer.js:33:58)
at /Users/sergiofernandez/Repositories/milu-web/node_modules/@nestia/core/lib/transformers/FileTransformer.js:33:141
at visitArrayWorker (/Users/sergiofernandez/Repositories/milu-web/node_modules/typescript/lib/typescript.js:95775:49)
at visitNodes2 (/Users/sergiofernandez/Repositories/milu-web/node_modules/typescript/lib/typescript.js:95746:19)
at visitEachChildOfClassDeclaration (/Users/sergiofernandez/Repositories/milu-web/node_modules/typescript/lib/typescript.js:96689:7)
this is my tsconfig
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["node", "express", "multer"],
"emitDecoratorMetadata": true,
"target": "es2021",
"isolatedModules": true,
"strict": true,
"strictPropertyInitialization": false,
"plugins": [
{ "transform": "typia/lib/transform" },
{
"transform": "@nestia/core/lib/transform",
"validate": "assert",
"stringify": "assert"
}
]
},
"exclude": [
"node_modules",
"dist",
"build",
"coverage",
".next",
".turbo",
"tmp",
"vitest.*.ts",
],
"include": ["src/**/*.ts", "../../@types/*.d.ts", "./types.d.ts"]
}