Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: Setting Faker type in setSeederFactory does not work #1232

Open
SavoVuksan opened this issue Dec 24, 2024 · 1 comment
Open

Bug: Setting Faker type in setSeederFactory does not work #1232

SavoVuksan opened this issue Dec 24, 2024 · 1 comment

Comments

@SavoVuksan
Copy link

SavoVuksan commented Dec 24, 2024

Versions

  • Node: 20.16.0
  • OS: Ubuntu 24.04 LTS

Reproduction

I am currently trying to setup seeding with typeorm-extension. It seems that it does not work to define the type of the Faker instance for the setSeederFactory. When defining the type it says that faker is missing some types.

import { setSeederFactory } from 'typeorm-extension';
import { User } from '../entities/user.entity';
import { Faker } from '@faker-js/faker/.';

export const UserFactory = setSeederFactory(User, (faker: Faker) => {
  const user = new User();
  user.firstName = faker.person.firstName();
  user.lastName = faker.person.lastName();
  user.email = faker.internet.email();
  user.avatarUrl = faker.image.avatar();

  return user;
});

I get following error from my VS Code

Argument of type '(faker: Faker) => User' is not assignable to parameter of type 'FactoryCallback<User, unknown>'.
  Types of parameters 'faker' and 'faker' are incompatible.
    Type 'Faker' is missing the following properties from type 'Faker': book, foodts(2345)

Am I doing something wrong here? Is it not allowed to define the Faker type? Or am I using the wrong faker version?

My package.json

{
  "name": "nestjs-course",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json",
    "seed": "ts-node src/seeding/seed.ts"
  },
  "dependencies": {
    "@nestjs/common": "^10.0.0",
    "@nestjs/core": "^10.0.0",
    "@nestjs/mapped-types": "^2.0.6",
    "@nestjs/platform-express": "^10.0.0",
    "@nestjs/typeorm": "^10.0.2",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.14.1",
    "pg": "^8.13.1",
    "reflect-metadata": "^0.2.0",
    "rxjs": "^7.8.1",
    "typeorm": "^0.3.20",
    "typeorm-extension": "^3.6.3",
    "zod": "^3.24.1"
  },
  "devDependencies": {
    "@faker-js/faker": "^9.3.0",
    "@nestjs/cli": "^10.0.0",
    "@nestjs/schematics": "^10.0.0",
    "@nestjs/testing": "^10.0.0",
    "@types/express": "^5.0.0",
    "@types/jest": "^29.5.2",
    "@types/node": "^20.3.1",
    "@types/supertest": "^6.0.0",
    "@typescript-eslint/eslint-plugin": "^8.0.0",
    "@typescript-eslint/parser": "^8.0.0",
    "eslint": "^8.0.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-plugin-prettier": "^5.0.0",
    "jest": "^29.5.0",
    "prettier": "^3.0.0",
    "source-map-support": "^0.5.21",
    "supertest": "^7.0.0",
    "ts-jest": "^29.1.0",
    "ts-loader": "^9.4.3",
    "ts-node": "^10.9.1",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.1.3"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}
@SavoVuksan
Copy link
Author

Ok I changed the faker version to the one in typeorm-extension that seemed to do the trick.

TLDR:
I had to change faker-js from version 9 to version 8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant