inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

DB 생성시 Error: Cannot find module './index.js 가 계속 뜨는데 뭐가 문제인가요??

해결됨

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

강의를 듣던 도중 npm run db:create를 실행시켰는데 아래 에러 메세지가 나옵니다. > a-nest@0.0.1 db:create > ts-node ./node_modules/typeorm-extension/dist/cli/index.js db:create -d ./dataSource.ts node:internal/modules/cjs/loader:942 throw err; ^ Error: Cannot find module './index.js' Require stack: - C:\nestStudy\slack-clone-app\a-nest\node_modules\typeorm-extension\dist\cli\imaginaryUncacheableRequireResolveScript at Module._resolveFilename (node:internal/modules/cjs/loader:939:15) at Function.resolve (node:internal/modules/cjs/helpers:108:19) at requireResolveNonCached (C:\nestStudy\slack-clone-app\a-nest\node_modules\ts-node\dist\bin.js:549:16) at getProjectSearchDir (C:\nestStudy\slack-clone-app\a-nest\node_modules\ts-node\dist\bin.js:519:40) at phase3 (C:\nestStudy\slack-clone-app\a-nest\node_modules\ts-node\dist\bin.js:267:27) at bootstrap (C:\nestStudy\slack-clone-app\a-nest\node_modules\ts-node\dist\bin.js:47:30) at main (C:\nestStudy\slack-clone-app\a-nest\node_modules\ts-node\dist\bin.js:33:12) at Object.<anonymous> (C:\nestStudy\slack-clone-app\a-nest\node_modules\ts-node\dist\bin.js:579:5) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Module._extensions..js (node:internal/modules/cjs/loader:1159:10) { code: 'MODULE_NOT_FOUND', requireStack: [ 'C:\\nestStudy\\slack-clone-app\\a-nest\\node_modules\\typeorm-extension\\dist\\cli\\imaginaryUncacheableRequireResolveScript' ] } Node.js v18.0.0 package.json { "name": "a-nest", "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-backup": "nest start --watch", "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --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", "typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js", "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" }, "dependencies": { "@nestjs/common": "^10.0.0", "@nestjs/config": "^3.0.0", "@nestjs/core": "^10.0.0", "@nestjs/platform-express": "^10.0.0", "@nestjs/swagger": "^7.1.2", "@nestjs/typeorm": "^10.0.0", "mysql2": "^3.6.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.8.1", "swagger-ui-express": "^5.0.0", "typeorm-extension": "^3.0.1" }, "devDependencies": { "@nestjs/cli": "^10.0.0", "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", "@types/node": "^20.3.1", "@types/supertest": "^2.0.12", "@typescript-eslint/eslint-plugin": "^5.59.11", "@typescript-eslint/parser": "^5.59.11", "eslint": "^8.42.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^4.2.1", "jest": "^29.5.0", "prettier": "^2.8.8", "run-script-webpack-plugin": "^0.2.0", "source-map-support": "^0.5.21", "supertest": "^6.3.3", "ts-jest": "^29.1.0", "ts-loader": "^9.4.3", "ts-node": "^10.9.1", "tsconfig-paths": "^4.2.0", "typeorm-model-generator": "^0.4.6", "typescript": "^5.1.3", "webpack": "^5.88.2", "webpack-node-externals": "^3.0.0" }, "jest": { "moduleFileExtensions": [ "js", "json", "ts" ], "rootDir": "src", "testRegex": ".*\\.spec\\.ts$", "transform": { "^.+\\.(t|j)s$": "ts-jest" }, "collectCoverageFrom": [ "**/*.(t|j)s" ], "coverageDirectory": "../coverage", "testEnvironment": "node" } } index.js 를 못 찾는다는 에러같은데 어디 부분이 잘 못된건지 모르겠습니다ㅠ 이 에러 때문에 테이블들도 생성되지 않았습니다.

  • node.js
  • express
  • nestjs
  • typeorm
dev kim 댓글 2 좋아요 0 조회수 1681

포트포워딩

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요 3306포트로 했을때는 정상작동해서 단순 호기심으로 3306포트를 3307포트로 바꿔서 해보았는데 다음과 같은 에러가 뜨고 안되네요.. 다른 설정은 다 그대로고 포트번호만 바꾸었는데도 안되는 이유가뭘까요?

  • docker
  • nestjs
야돈 댓글 1 좋아요 0 조회수 243

spec.ts 파일이 자동으로 생기는데 왜 생기는 건가요??

해결됨

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

안녕하세요. 강의를 따라하면서 파일을 생성할때 항상 아래 이미지처럼 spec.ts 파일이 자동으로 생성되는 이유가 뭔가요?? 강사님은 안 생기시는 것 같은데 저는 1개 파일당 1개씩 전부 생겨버려서 너무 많은 양의 파일들이 만들어집니다..

  • node.js
  • express
  • nestjs
  • typeorm
dev kim 댓글 1 좋아요 0 조회수 689

exception filter에 잡히질 않습니다

미해결

탄탄한 백엔드 NestJS, 기초부터 심화까지

import { ExceptionFilter, Catch, ArgumentsHost, HttpException, } from '@nestjs/common'; import { Request, Response } from 'express'; @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse<Response>(); const request = ctx.getRequest<Request>(); const status = exception.getStatus(); const error = exception.getResponse() as | string | { error: string; statusCode: number; message: string | string[] }; if (typeof error === 'string') { response.status(status).json({ statusCode: status, timestamp: new Date().toISOString(), path: request.url, message: error, }); } else { response.status(status).json({ statusCode: status, timestamp: new Date().toISOString(), path: request.url, message: error, }); } } } 안녕하세요 ! 위와 같이 필터 작성이후 main.ts 에서 app.useGlobalFilter(new HttpExceptionFilter()); 를 통해 예외가 잘 잡히는것을 확인을 했었습니다. 왜인지는 모르겠으나 cat의 모델 내부 필드중에 imgUrl 부분을 null 을 허용해주기 위해 @IsOptional() 을 붙여주고난 뒤에 중복 회원가입을 진행하려 할 경우 예외에 잡히게끔 하려 HttpException 을 발생 시키게끔 했습니다. async signUp(body: CatRequestDTO): Promise<Cat> { const email = body.email; const checkExist = await this.catRepository.findOne({ where: { email } }); if (!checkExist) { const createdCat = this.catRepository.create(body); this.catRepository.save(createdCat); return createdCat; } else { throw new HttpException( 'Already exist Email in DB', HttpStatus.BAD_REQUEST, ); } } 콘솔창에 에러 메세지와 함께 출력되는것은 확인되나 Filter에서 exception @Catch 로 묶어준것에 잡히지를 않습니다. 도통 이유를 못찾겠어서 app.useGlobalFilter(...) 를 catController 쪽에 @UseFilters(new HttpExceptionFilter()) 로도 바꿔보고 메서드에다가 직접적으로도 붙여보았으나 계속 똑같은 현상을 보이는데 왜 인지를 못잡겠습니다. 조언을 좀 주시면 감사하겠습니다.

  • node.js
  • mongodb
  • express
  • nestjs
  • ssr
후니훈 댓글 1 좋아요 0 조회수 335

상품삭제 API 강의에서 소프트 삭제 관련 질문

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

TypeORM을 이용한 소프트 삭제에서 softRemove와 softDelete를 이용하는 방법 두가지가 있는데, 강의에서는 softDelete를 이용하는 경우에 대해 설명을 해주셨는데요. softRemove를 하는 경우에도 entity에 똑같이 @DeleteDateColumn 으로 deleteAt을 추가해주면 되나요? @RemoveDateColumn은 내장되어 있지 않은것 겉더라구요.. 그리고 softRemove 에서는 .affected 가 안되던데 true 나 false로 리턴받을 수 있는 방법이 있을까요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
장정욱 댓글 1 좋아요 0 조회수 339

npm run start:dev 에러

미해결

탄탄한 백엔드 NestJS, 기초부터 심화까지

터미널에 npm run start:dev 를 입력하면 자꾸 Error: Cannot find module 라는 에러가 뜹니다;; npm를 지웠다 깔기도 하고, node module 폴더를 삭제하기도하고, lock.json 파일을 삭제해보기도 했는데 여전히 계속 에러가 뜨는데 왜 이런건가요?.....

  • node.js
  • mongodb
  • express
  • nestjs
  • ssr
임동규(DongGyu Im) 댓글 1 좋아요 0 조회수 736

nestjs graphql API 요청 관련 질문

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요. express 에서 rest 방식에서는 API를 생성할 때, get이나 post 등의 메소드 방식을 정하고 주소를 지정하여 프론트엔드에서 fetch 나 axois 함수에 주소를 기입하여 API 요청을 했었습니다. graphQL 방식의 nestjs에서는 프론트엔드에서 API 요청을 보낼 때 어떤 방식으로 하나요? 따로 주소 같은 것을 지정해주지는 않는 것같은데.. 똑같이 fetch 나 axois 함수를 통해 요청을 하는 건가요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
장정욱 댓글 1 좋아요 1 조회수 437

완강하고 공부할거 질문입니다

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

완강하면 코테,CS 준비하면 되나요? 근데 코테 언어는 어떤 걸로 준비해야 할까요

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 761

docker 명령어 에러 떠요

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

docker rm `docker ps -a- q'라고 입력했는데 unknown shorthand flag: 'a' in -a- 라고 에러 뜹니다

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 789

jwtstrategy error

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요 원두멘토님ㅎㅎ 이런 에러가 계속 떠서 docs와 스텍오버플로우에 검색을 해보니 Passport-jwt를 import하는 것이 아닌 passport-local을 import하는 것이라해서 했더니 다행히 실행이 됩니다. 수업내용에서는 passport-jwt로만 해도 작동이 잘되는 것 같은데 왜 이런 문제가 생기는 것일까요? 그리고 passport-local로 하면 실제 배포에서는 사용 못하는 것이 아닌지 질문을 남깁니다. p.s 재작년에 코캠2기 수료하고 백엔드를 많이 기다렸는데 이렇게 인프런에서 다시 인강으로 뵙게 되서 너무 반갑습니다

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
이주환 댓글 2 좋아요 0 조회수 361

몽구스 객체값 저장하기

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

cheerio로 가져온값을 객체로 만든다음 밖으로 보내서 최종적으로 몽구스로 저장하고싶은데 문제가 생겼던게 저상태로 보내면 [object:object] 로 나오므로 JSON.stringfy()작업으로 문자열 형태로 내보내 주었습니다. 하지만 schema부분을 object로 하여도 object가 가장 상위의 데이터 타입으로 string형태로 저장된다고 여겨졌습니다. 그래서 JSON.stringfy()로 빼내고 저장하는 부분에서 JSON.parse로 하여 다시 저장할려 했지만 다시 [object:object]로 나와서 이부분을 어떻게 해결해야할지 잘찾아봐도 모르겠어서 질문 남겼습니다. // siteInfo.js import axios from "axios"; import cheerio from "cheerio"; export class SiteInfo { siteInfo = async (prefer) => { console.log(prefer); const siteData = await axios .get(prefer) .then() .catch((err) => { console.log("서버 데이터 안받아와짐 오류 : " + err); }); const keys = []; const values = []; const $ = cheerio.load(siteData.data); $("meta").each((index, el) => { if ( $(el).attr("property") && ($(el).attr("property").includes("og:title") || $(el).attr("property").includes("og:description") || $(el).attr("property").includes("og:image")) ) { const content = $(el).attr("content"); const title = $(el).attr("property"); keys.push(title); values.push(content); } }); const arr = []; for (let i = 0; i < keys.length; i++) { arr.push({ [keys[i]]: values[i], }); } console.log("여기 테스트 : " + arr); return arr; }; } // signup.controller.js export class SignupController { siteInfoService; isValueService; saveDataService; emailService; constructor(siteInfoService, isValueService, saveDataService, emailService) { this.siteInfoService = siteInfoService; this.isValueService = isValueService; this.saveDataService = saveDataService; this.emailService = emailService; } singUp = async (req, res) => { const name = req.body.name; const email = req.body.email; const personal = req.body.personal; const prefer = req.body.prefer; const pwd = req.body.pwd; const phone = req.body.phone; console.log(req.body); const hasValue = this.isValueService.checkToken(phone); if (hasValue === false) { res.json("isAuth값이 false입니다"); } const siteInfo = await this.siteInfoService.siteInfo(prefer); const ttt = JSON.parse(siteInfo); console.log("여기 문제 발생 : " + typeof ttt); console.dir("여기 문제 발생 22222: " + ttt); const dataSave = await this.saveDataService.dataSave({ name, email, personal, prefer, pwd, phone, siteInfo, }); const isValue = this.emailService.checkMail(email); if (isValue === false) { res.send("이메일 형식이 잘못되었습니다"); } const template = this.emailService.welcomeMessage({ name, phone, prefer }); this.emailService.sendTemplateToEmail({ template, email, }); res.send("_id : " + dataSave); }; userSearch = async (req, res) => { const searchReault = await this.saveDataService.dataSearch(); console.log(searchReault); res.send(searchReault); }; } // index.js import express from "express"; import mongoose from "mongoose"; import cors from "cors"; // import { Token, User } from "./mvc/model/schema.model.js"; import { TokenController } from "./mvc/controller/token.controller.js"; import { SignupController } from "./mvc/controller/signup.controller.js"; // 사이트 정보 가져오기 import { SiteInfo } from "./mvc/controller/service/siteInfo.js"; // 핸드폰 정보 맞는지 boolean으로 import { CheckToken } from "./mvc/controller/service/token.js"; // db저장하고 리턴값 가져오기 import { UserDb } from "./mvc/controller/service/userDb.js"; // 이메일 확인하고 보내주기 import { EmailService } from "./mvc/controller/service/email.js"; // 핸드폰 문자 보내기 import { PhoneService } from "./mvc/controller/service/phone.js"; const app = express(); const corsOptions = { origin: "http://127.0.0.1:5500", }; app.use(cors(corsOptions)); const siteInfo = new SiteInfo(); const checkToken = new CheckToken(); const userDb = new UserDb(); const emailService = new EmailService(); const phoneService = new PhoneService(); app.use(express.json()); const signUpController = new SignupController( siteInfo, checkToken, userDb, emailService ); app.post("/users", signUpController.singUp); app.get("/users", signUpController.userSearch); const tokenController = new TokenController(phoneService, checkToken); app.post("/tokens/phone", tokenController.insertdata); app.patch("/tokens/phone", tokenController.checkToken); mongoose.set("debug", true); mongoose .connect("mongodb://mongodb-file:27017/dockerconnetor") .then(() => { console.log("connect success"); }) .catch(() => { console.log("fail to connect with db"); }); app.listen(3001, () => { console.log("server open"); }); // userDb.js import { User } from "../../model/schema.model.js"; export class UserDb { dataSave = async ({ name, email, personal, prefer, pwd, phone, siteInfo, }) => { const siteInforesult = JSON.parse(siteInfo); console.log("여기 확인 : " + siteInforesult); const data = new User({ name: name, email: email, personal: personal, prefer: prefer, pwd: pwd, phone: phone, siteInfo: siteInfo, }); await data.save(); const idData = await User.findOne({ phone: phone }, { _id: 1 }).exec(); return idData._id; }; dataSearch = async (name) => { console.log("start datasearch"); const result = await User.find().exec(); return result; }; } // schema.model.js import mongoose from "mongoose"; const tokenSchema = new mongoose.Schema({ phone: String, token: Number, isAuth: Boolean, }); export const Token = mongoose.model("Token", tokenSchema); const userSchema = new mongoose.Schema({ name: String, email: String, personal: String, prefer: String, pwd: String, phone: String, siteInfo: { title: String, content: String, image: String, }, }); export const User = mongoose.model("User", userSchema);

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
jay kang 댓글 1 좋아요 0 조회수 601

docker 이미지는 한개만 만들 수 있나요?

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

docker 빌드하고 이미지를 4시간 전에 만들었는데 방금 또 빌드하고 이미지 했더니 4시간 전에 만든거라고 나왔어요.그리고 IMAGES ID도 똑같네요

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 371

자바스프링 병행

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

지금 nodejs 듣고 있는데 제가 중소기업해서 취업해서 나중에 대기업 가고 싶은데 일단 중소기업 취업 먼저 생각해보면 node만 공부하는게 낫나요

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 433

백엔드는 명령어 많이 알아야 하나요?

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

vscode에서 명령어 입력하고 docker 실행 명령어도 입력했는데 powershell이나 다른 프로그램에서도 명령어 많이 알아야하나요

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 237

다음 에러나시는 분들 참고하세요: "Error: Can't add new command when connection is in closed state"

미해결

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

제가 아래 순서대로 진행하여 해결했습니다. https://www.npmjs.com/package/typeorm-extension 의 스크립트를 참고하였는가 MySQL hosts파일에 ::1이 localhost로 바인딩되어있는 부분을 주석처리하기 이게 어려우면 localhost대신 루프백주소를 넣으세요 이래도 안되면 에러 코드 다시 읽어보기 그래도 안되면 chatGPT한테 물어보기 참고로, 강사님이 쓰는 extension이랑 최신버전이랑 사용법이 약간 다른 것 같은데 자세히는 아직 안봤지만 각자 1번은 무조건 확인하십쇼

  • node.js
  • express
  • nestjs
  • typeorm
김경호 댓글 2 좋아요 0 조회수 2117

이메일 템플릿 이메일 전송

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

구글 앱 비밀번호 설정 떄문에 막힙니다 2단계 인증했고 앱 비밀번호 생성해서 그걸 구글 비밀번호로 바꾸고 선생님 코드를 잘 따라해서 적었는데 Error: Invalid login: 535-5.7.8 Username and Password not accepted. 라고 에러 납니다 혹시 방법 없을까요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 383

apollo 서버 코드 질문합니다

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

질문입니다 type Mutation { createBoard(createBoardInput: CreateBoardInput!):String } 에서 맨 마지막에 왜 createBoard는 String이 붙고 type Query{ fetchBoards: [MyResult] } 에서 fetchBoards는 맨 마지막에 String이 안 붙나요? fetchBoards: [MyResult]:String 이렇게 될수도 있지 않나요 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ const typeDefs = `#graphql type Query{ fetchBoards: [MyResult] } type Mutation { createBoard(createBoardInput: CreateBoardInput!):String } `; const resolvers = { Query: { fetchBoards: (parent, args, context, info) => { const result = [ { number: 1, writer: "철수", title: "제목입니다", contents: "내용이에요", }, {number: 2,writer: "영희", title: "제목입니다",contents: "영희이에요",}, { number: 3, writer: "훈이", title: "제목입니다",contents: "훈이이에요", },]; return result; } }, Mutation: { createBoard: (_, args) => { console.log(args); onsole.log("========================="); console.log(args.createBoardInput.writer); console.log(args.createBoardInput.title); console.log(args.createBoardInput.contents); return "게시물 등록에 성공하였습니다"; }, }, };

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 318

학습조언 해주세요

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

인강 40분짜리 3개 듣고 복습해서 총 5시간을 소비했는데 잘 하고 있는 건지 궁금해요

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 299

mysql 관련 docker-compose 빌드 시 에러

미해결

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

강의 하나 들을 때마다 에러가 너무 많이 떠서 진도가 안나가서 미칠 지경이네요 ㅠㅠ docker-compose.yaml 파일을 아래와 같이 설정하고 docker-compose build를 하니 services.mydb.environment.0 must be a string 라는 에러가 떠서 구글링을 하니 environment: - MYSQL_DATABASE: 'dockerProject' - MYSQL_ROOT_PASSWORD: 'root' 여기서 띄어쓰기를 없애보라고 하길래 아래와 같이 띄어쓰기를 없앤채로 .yaml파일을 변경하였습니다. version: '3.7' services: mybackend: build: context: . dockerfile: Dockerfile volumes: - ./src:/myfolder/src ports: - 3000:3000 env_file: - ./.env.docker mydb: # platform: linux/86_64 image: mysql:8.0.34 environment: - MYSQL_DATABASE:'dockerProject' - MYSQL_ROOT_PASSWORD:'root' ports: - 3306:3306 그리고는 docker-compose build 이후 up을 실행했으나 ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... 에러가 계속 발생합니다.(docker 말고 내 로컬컴퓨터에서는 mysql 연결 잘 되었음) 다른 질문자 분들 내용을 참조하여 package.json 파일의 mysql2와 typeorm의 버전을 아래와 같이 바꾸었고, .yaml 파일에서도 mysql 버전을 latest에서 8.0.34로 지정해주었습니다. { "name": "graghql", "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" }, "dependencies": { "@apollo/server": "^4.9.0", "@nestjs/apollo": "^12.0.7", "@nestjs/common": "^10.0.0", "@nestjs/config": "^3.0.0", "@nestjs/core": "^10.0.0", "@nestjs/graphql": "^12.0.8", "@nestjs/platform-express": "^10.0.0", "@nestjs/typeorm": "^10.0.0", "graphql": "^16.7.1", "mysql2": "3.2.0", "reflect-metadata": "^0.1.13", "rxjs": "^7.8.1", "typeorm": "^0.3.12" }, "devDependencies": { "@nestjs/cli": "^10.0.0", "@nestjs/schematics": "^10.0.0", "@nestjs/testing": "^10.0.0", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", "@types/node": "^20.3.1", "@types/supertest": "^2.0.12", "@typescript-eslint/eslint-plugin": "^5.59.11", "@typescript-eslint/parser": "^5.59.11", "eslint": "^8.42.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^4.2.1", "jest": "^29.5.0", "prettier": "^2.8.8", "source-map-support": "^0.5.21", "supertest": "^6.3.3", "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" } } 그런데도 똑같이 ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)... 에러가 발생하여 node_modules 파일 및 dist 파일을 삭제 후 다시 yarn install을 했는데, 이제는 import도 되지 않습니다.... 에러 때문에 진도가 나가질 않아, 중간중간에 강의를 멈춰가며 강의와 똑같이 따라가고 있는데 왜 이런 에러가 계속 발생할까요 ㅠㅠ

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
댓글 2 좋아요 0 조회수 705

별거 아니지만 항상 궁금했던거요

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

객체로 나타낼 떄 따옴표 쓰는 거 하고 쌍따옴표 쓰는 거 하고 뭔 차이인가요? 그리고 따옴표 쓰면 계속 따옴표 쓰고, 쌍따옴표 쓰면 계속 쌍따옴표로 써야하나요?

  • javascript
  • node.js
  • express
  • docker
  • tdd
  • rest-api
  • nestjs
kql 1 댓글 1 좋아요 0 조회수 254

인기 태그

인프런 TOP Writers

주간 인기글