작성
·
707
0
yarn seed를 통해 더미데이터를 생성하려 했으나 "seeder is not a constructor" 라는 에러에 마주칩니다.
어느 부분이 잘못됫는지 알아보기 위해 에러코드를 살펴봤으나 제 코드 부분이 아닌 typeorm-extension 부분에서 에러가 나는것 같아 해결하기 어렵습니다.
TypeError: seeder is not a constructor
at /Users/jinyoung/Desktop/try-own-version/practice-version/node_modules/typeorm-extension/src/seeder/module.ts:122:19
at Generator.next (<anonymous>)
at fulfilled (/Users/jinyoung/Desktop/try-own-version/practice-version/node_modules/typeorm-extension/dist/seeder/module.js:5:58)
dataSource.ts
import dotenv from 'dotenv';
//dataSource에 entity를 입력해줄때는 절대경로면 못찾아온다. 그래서 상대 경로로 써줘야함
import { User } from './src/users/entities/user.entity';
import { DataSource } from 'typeorm';
const mode = process.env.NODE_ENV || 'development';
dotenv.config({ path: process.cwd() + `/.env.${mode}` });
const dataSource = new DataSource({
type: 'mysql',
host: 'localhost',
port: 3306,
database: process.env.DB_DATABASE,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
charset: 'utf8mb4_general_ci',
entities: [User],
migrations: [__dirname + '/src/migrations/*.ts'],
synchronize: true,
logging: true,
});
export default dataSource;
package.json seed부분 설정
"seed": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts"
database/seeds/create-initial-data.ts
import { User } from '../../users/entities/user.entity';
import { DataSource } from 'typeorm';
import { Seeder, SeederFactoryManager } from 'typeorm-extension';
export class UserSeeder implements Seeder {
async run(
dataSource: DataSource,
factoryManager: SeederFactoryManager,
): Promise<any> {
const userRepository = dataSource.getRepository(User);
await userRepository.save({
email: 'ggg@gmail.com',
firstName: 'sfvs',
lastName: 'wdwdwd',
nickname: 'hihi',
});
}
}
typeorm-extension 버젼
"typeorm-extension": "^2.4.2",
"typeorm": "^0.3.12",
시도해본 내용
1. dataSource 생성시 new DataSource({
... 중략
seed:["create-initial-data.ts 경로"] 추가
})
2. db 삭제후 다시 생성(생성시 테이블 싱크까지 맞춘후 seed 시도)
3. typeorm-extension 버전 문제일까 해서 다운그레이드 시도
4. typeorm 0.3대는 유지하고 0.3.11, 0.3.10등 다른 버전으로 시도
결과 모두 실패
답변 2
0
헤메시는 분들 있을까봐 댓글 남깁니다.
해당 에러는 default가 빠져서 발생하는 오류입니다.
질문자님 코드 기준으로
database/seeds/create-initial-data.ts 에서
export default class UserSeeder implements Seeder {
로 수정하면 해당 에러는 사라질것 같네요.
0.2와 0.3 사이에 바뀐게 많아서 혼란스러운 부분이 많네요.
다들 화이팅입니다!
0