inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

typeorm seeding, migration

dataSource내부 환경변수 인식 불가에 따른 db연결 실패

606

양진영

작성한 질문수 13

0

dataSource.ts
import { DataSource } from 'typeorm';

import { ChannelChats } from './src/entities/channelChat.entity';
import { ChannelMembers } from './src/entities/channelMembers.entity';
import { Channels } from './src/entities/channel.entity';
import { DMs } from './src/entities/dm.entity';
import { Mentions } from './src/entities/mention.entity';
import { Users } from './src/entities/user.entity';
import { WorkspaceMembers } from './src/entities/workspaceMembers.entity';
import { Workspaces } from './src/entities/workspace.entity';
import { ConfigService } from '@nestjs/config';

const configService = new ConfigService();

const test = configService.get('DB_HOST');
console.log(test)
const dataSource = new DataSource({
  type: 'mysql',
  host: '127.0.0.1',
  port: 3306,
  username: configService.get('DB_USER'),
  password: configService.get('DB_PASSWORD'),
  database: configService.get('DB_NAME'),
  entities: [
    ChannelChats,
    ChannelMembers,
    Channels,
    DMs,
    Mentions,
    Users,
    WorkspaceMembers,
    Workspaces,
  ],
  migrations: [__dirname + '/src/migrations/*.ts'],
  synchronize: false,
  logging: true,
});
출력 에러 로그

yarn seed
yarn run v1.22.19
warning ../../../../package.json: No license field
$ ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts
undefined !!!!!!!!!!!!!!!
Error during Data Source initialization Error: Access denied for user ''@'localhost' (using password: NO)
    at Packet.asError (/Users/jinyoung/Desktop/study/nest/nest-project/node_modules/mysql2/lib/packets/packet.js:728:17)
    at ClientHandshake.execute (/Users/jinyoung/Desktop/study/nest/nest-project/node_modules/mysql2/lib/commands/command.js:29:26)
    at PoolConnection.handlePacket (/Users/jinyoung/Desktop/study/nest/nest-project/node_modules/mysql2/lib/connection.js:478:34)
    at PacketParser.onPacket (/Users/jinyoung/Desktop/study/nest/nest-project/node_modules/mysql2/lib/connection.js:97:12)
    at PacketParser.executeStart (/Users/jinyoung/Desktop/study/nest/nest-project/node_modules/mysql2/lib/packet_parser.js:75:16)
    at Socket.<anonymous> (/Users/jinyoung/Desktop/study/nest/nest-project/node_modules/mysql2/lib/connection.js:104:25)
    at Socket.emit (node:events:513:28)
    at Socket.emit (node:domain:489:12)
    at addChunk (node:internal/streams/readable:324:12)
    at readableAddChunk (node:internal/streams/readable:297:9) {
  code: 'ER_ACCESS_DENIED_ERROR',
  errno: 1045,
  sqlState: '28000',
  sqlMessage: "Access denied for user ''@'localhost' (using password: NO)",
  sql: undefined
}
typeorm-extension seed
.env
NAME=development
DB_HOST=localhost
DB_NAME=nestdb
DB_USER=root
DB_PASSWORD=password!!!
package.json
"db:create": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js db:create -d ./dataSource.ts",
    "db:drop": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js db:drop -d ./dataSource.ts",
    "seed": "ts-node ./node_modules/typeorm-extension/dist/cli/index.js seed -d ./dataSource.ts",
    "schema:drop": "ts-node ./node_modules/typeorm/cli.js schema:drop",
    "schema:sync": "ts-node ./node_modules/typeorm/cli.js schema:sync",
    "db:migrate": "npm run typeorm migration:run -- -d ./dataSource.ts",
    "db:migrate:revert": "npm run typeorm migration:revert -- -d ./dataSource.ts",
    "db:create-migration": "npm run typeorm migration:create -- ./src/migrations/",
    "db:generate-migration": "npm run typeorm migration:generate -- ./src/migrations -d ./dataSource.ts"
폴더구조

- node_module
- src
- .env
- dataSource.ts
- package.json

 

출력에러 로그에 보시면 맨위 yarn seed 기준 5번째 줄에 undefined !!!!!! 이런 로그를 확인하실수 있으실텐대 이게 process.env.DB_NAME을 해도 이렇게 나오고 configService.get('DB_NAME')을 해도 undefined로 나오는걸로 확인해본결과 현재 환경변수가 인지가 되지않는 상태라는것을 알아챈 상태까지 왔습니다. 여기서 어떤 부분을 손보면 좋을지 궁금합니다.

 

node.js express nestjs typeorm

답변 1

0

제로초(조현영)

@nestjs/config 쓰지마시고 dotenv 모듈 사용하세요

0

양진영

잘해결되어 감사합니다. 하지만 이해가 가진않습니다. 물론 dotenv모듈을 사용해서 환경변수 인식이 되긴했지만 new ConfigService() 해서 인스터스 생성한걸로 환경변수 사용할수있을줄 알았는데 어째서 사용할수 없었던걸까요??

1

제로초(조현영)

네스트의 모듈인데 독립적으로 사용하셔서 그렇습니다

강의자료는 어디서 다운받나요?

0

110

3

질문 있습니다.

0

294

3

(강의 5:42 질문) providers를 통한 여러 개의 인스턴스 생성 & exports 통한 싱글톤 생성

0

154

2

코드 편집기 확장 프로그램

0

209

2

(질문)비밀 저장소에 접근하기 위한 인증 정보는 로컬 .env에 저장하는지?

0

143

2

(질문)외부 저장소를 통한 환경변수 불러오기 비동기 질문

0

166

3

로그인을 해도 LoggedInGuard쪽에서 false값이 나옵니다.

0

152

2

로그인방법이 고민됩니다.

0

190

2

yarn seed 명령어 실행 시 데이터 삽입 안됨

0

296

4

yarn run db:create 시에 발생하는 데코레이터 오류

0

242

2

npm run db:create 시에 발생하는 decorating 오류

0

231

2

RxJS 디버깅 질문 있습니다.

0

187

3

CacheManager에 대해 질문 있습니다.

0

173

2

로깅은 어떻게 하는게 효율적일까요?

0

224

1

CORS 질문 있습니다.

0

417

2

쿠키 옵션에 대해서 질문 있습니다.

0

184

2

로그아웃 요청이 403 forbidden 에러가 나는데 왜그런걸까요??

0

447

1

401 unauthorized문제

0

286

1

가드의 장점에 대해서 질문이 있습니다.

0

225

1

로그 관리에 대해 질문 있습니다.

0

252

2

CORS 에러 질문 있습니다.

0

318

2

배포 환경 DB 연결 질문 있습니다.

0

411

2

socket io 미 연결 문제 (nest & flutter)

1

1154

3

no elements in sequence 에러 관해서 질문이 있습니다.

0

454

1