nestia icon indicating copy to clipboard operation
nestia copied to clipboard

Issues with NX 21 and 22

Open sergio-milu opened this issue 1 month ago • 0 comments

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"]
}

sergio-milu avatar Nov 04 '25 11:11 sergio-milu