nartc / mapper

🔥 An Object-Object AutoMapper for TypeScript 🔥
https://automapperts.netlify.app/
MIT License
961 stars 84 forks source link

NestJS Error Debug Failure. False expression: Too many nodes written to output #564

Open accarvajal opened 11 months ago

accarvajal commented 11 months ago

Is there an existing issue for this?

Describe the issue

I'm using package in NestJS v10 and I followed the documentation.

According samples, to avoid decorating classes with @AutoMap(), I can use a transformer plugin that enables automapper to run a before transformer looking for .entity.ts .model.ts, etc. files and add them to a list for mappings. So I configured nest-cli.json as shown below:

{
      "$schema": "https://json.schemastore.org/nest-cli",
      "collection": "@nestjs/schematics",
      "sourceRoot": "src",
      "compilerOptions": {
           "plugins": [
                 "@automapper/classes/transformer-plugin"
           ]
       }
}

However when I run the app by using nest start, it throws the error:

Error Debug Failure. False expression: Too many nodes written to output.

In order to get the app working, I have to remove plugins entry leaving compilerOptions empty.

dependencies used:

  "dependencies": {
    "@automapper/classes": "^8.7.7",
    "@automapper/core": "^8.7.7",
    "@automapper/nestjs": "^8.7.7",
    "@nestjs/common": "^10.1.2",
    "@nestjs/config": "^3.0.0",
    "@nestjs/core": "^10.1.2",
    "@nestjs/cqrs": "^10.0.1",
    "@nestjs/jwt": "^10.0.3",
    "@nestjs/passport": "^10.0.0",
    "@nestjs/platform-express": "^10.1.2",
    "@nestjs/swagger": "^7.1.4",
    "@nestjs/throttler": "^4.0.0",
    "@nestjs/typeorm": "^10.0.0",
    "bcrypt": "^5.1.0",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.14.0",
    "passport": "^0.6.0",
    "passport-jwt": "^4.0.1",
    "passport-local": "^1.0.0",
    "pg": "^8.11.0",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^7.2.0",
    "typeorm": "^0.3.16"
  },
  "devDependencies": {
    "@nestjs/cli": "^10.1.10",
    "@nestjs/schematics": "^10.0.1",
    "@nestjs/testing": "^10.1.2",
    "@types/bcrypt": "^5.0.0",
    "@types/express": "^4.17.13",
    "@types/jest": "29.5.3",
    "@types/node": "20.4.5",
    "@types/passport-jwt": "^3.0.8",
    "@types/passport-local": "^1.0.35",
    "@types/supertest": "^2.0.11",
    "@typescript-eslint/eslint-plugin": "^6.2.0",
    "@typescript-eslint/parser": "^6.2.0",
    "eslint": "^8.0.1",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^5.0.0",
    "jest": "29.6.2",
    "prettier": "^3.0.0",
    "source-map-support": "^0.5.20",
    "supertest": "^6.1.3",
    "ts-jest": "29.1.1",
    "ts-loader": "^9.2.3",
    "ts-node": "^10.0.0",
    "tsconfig-paths": "4.2.0",
    "typescript": "^5.1.6",
    "vite": "^4.4.7"
  },

Thanks for any help

Models/DTOs/VMs

No response

Mapping configuration

In AppModule:

AutomapperModule.forRootAsync({
      useClass: AutomapperConfigService,
}),

in AutomapperConfigService:

import { classes } from '@automapper/classes';
import { CreateMapperOptions } from '@automapper/core';
import { AutomapperOptionsFactory } from '@automapper/nestjs';
import { Injectable } from '@nestjs/common';

@Injectable()
export class AutomapperConfigService implements AutomapperOptionsFactory {
  createAutomapperOptions():
    | CreateMapperOptions
    | Promise<CreateMapperOptions> {
    return {
      strategyInitializer: classes(),
    };
  }
}

Steps to reproduce

No response

Expected behavior

The error should not be thrown, the application should start running and allow me to run mapper without using the decorator @AutoMap().

Screenshots

image

Minimum reproduction code

No response

Package

Other package and its version

No response

AutoMapper version

8.7.7

Additional context

Windows 11

accarvajal commented 11 months ago

Due to the nest start command when throws the error get stuck, I run the command nest start --watch and I noticed that after making some code changes, it rebuilds and throws the following statck trace:

image

yuchuanxi commented 11 months ago

I have the same problem with version 8.7.7

davissimo commented 9 months ago

Same issue as well using NestJs 10.2.4 and Typescript 5.1.6, making the plugin not usable.

I see that the last commit or any issues closed by maintainer was in March. @nartc Is the library still maintained and to be utilized in production?

PS: I see that NestJs 10 (that @accarvajal is using as well) is not listed. Is it not supported at the moment?

Update: I see that there's a PR pending (since June, does not solve this issue) adding Nest 10 support that hasn't been merged. In fact nothing has past March.

ttshivers commented 9 months ago

I've fixed this in my fork https://github.com/ttshivers/mapper