Error#11. typeorm Error

깡통·2024년 2월 24일

위의 코드에서 "entities"와 "migrations" 배열은 TypeORM이 엔티티 및 마이그레이션 파일을 찾을 위치를 지정합니다. 여기에는 각각의 파일 경로나 디렉터리 경로를 포함할 수 있습니다.

"entities" 배열: 이 배열은 TypeORM이 엔티티 클래스를 찾을 위치를 지정합니다. "src/entity/*.js"는 "src/entity" 디렉터리 내의 모든 JavaScript 파일을 찾는 패턴을 나타냅니다. TypeORM은 이 디렉터리 내에 있는 각 JavaScript 파일을 엔티티로 인식하고 데이터베이스 테이블로 매핑합니다. 예를 들어, "User.js", "Post.js"와 같은 파일이 "src/entity" 디렉터리 내에 있다면, 이 파일들이 엔티티로 사용됩니다.

"migrations" 배열: 이 배열은 TypeORM이 마이그레이션 파일을 찾을 위치를 지정합니다. "src/migration/*.js"는 "src/migration" 디렉터리 내의 모든 JavaScript 파일을 찾는 패턴을 나타냅니다. 마찬가지로 TypeORM은 이 디렉터리 내에 있는 각 JavaScript 파일을 마이그레이션 파일로 인식합니다. 마이그레이션 파일은 데이터베이스 스키마 변경을 추적하고 적용하는 데 사용됩니다.

"cli" 객체: 이 객체는 TypeORM CLI(Command Line Interface)에서 사용됩니다. "entitiesDir" 및 "migrationsDir" 속성은 CLI가 엔티티 및 마이그레이션 파일을 생성할 위치를 나타냅니다. 예를 들어, typeorm migration:create -n MyNewMigration를 실행하면 CLI는 "src/migration" 디렉터리에 "MyNewMigration"이라는 새로운 마이그레이션 파일을 생성합니다. 마찬가지로 typeorm entity:create -n MyNewEntity를 실행하면 CLI는 "src/entity" 디렉터리에 "MyNewEntity"이라는 새로운 엔티티 파일을 생성합니다.

이러한 설정을 사용하여 TypeORM은 엔티티를 정의하고 데이터베이스 스키마를 관리하는 데 필요한 모든 정보를 알 수 있습니다. 이 설정은 프로젝트에 따라 수정되어야 할 수 있습니다. 엔티티 및 마이그레이션 파일의 실제 위치에 따라 경로를 적절히 수정하여 사용하십시오.

$ npx typeorm migration:run --dataSource ormconfig.json
Error during migration run:
Error: Given data source file must contain export of a DataSource instance
    at CommandUtils.loadDataSource (C:\Users\3050ti\Desktop\Coding-Camp\8th.Assignment\node_modules\typeorm\commands\CommandUtils.js:44:19)
    at async Object.handler (C:\Users\3050ti\Desktop\Coding-Camp\8th.Assignment\node_modules\typeorm\commands\MigrationRunCommand.js:40:26)

주어진 오류 메시지를 살펴보면, TypeORM CLI가 데이터 소스 파일에 데이터 소스 인스턴스의 내보내기를 요구하고 있다는 것을 나타냅니다. 그러나 현재 설정 파일인 ormconfig.json은 단순히 JSON 형식의 설정을 포함하고 있으며, 데이터 소스 인스턴스를 직접 내보내는 것이 아닙니다.

TypeORM CLI는 데이터 소스 인스턴스를 내보내는 TypeScript 또는 JavaScript 파일을 요구합니다. 이 파일은 보통 TypeORM의 createConnection 함수를 사용하여 데이터 소스 인스턴스를 생성하고 내보내는 형태를 가집니다.

따라서 오류를 해결하기 위해서는 ormconfig.json 대신 데이터 소스를 생성하는 JavaScript 또는 TypeScript 파일을 만들어야 합니다. 이 파일은 데이터 소스 인스턴스를 생성하고 내보내어야 합니다. 그런 다음 CLI 명령어를 실행할 때 해당 파일의 경로를 제공해야 합니다.

예를 들어, 데이터 소스를 생성하는 JavaScript 파일 datasource.js를 만들고 다음과 같이 내용을 작성할 수 있습니다:

이제 보니 피드백 영상의 index.js 파일의 dataSource 인스턴스가 ormconfig.json의 역할을 하고 있었네!

  • ts-node가 환경변수 경로 안에 없었던 이유는 그냥 typesrcript가 깔려 있지 않았기 때문이다.
profile
코딩하러 온 사람입니다.

0개의 댓글