일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Dinosaur
- flask
- 자료구조
- MongoDB
- game
- Nest.js
- nestjs
- class
- Python
- AWS
- nodejs
- jest
- 공룡게임
- typeORM
- TypeScript
- Express
- Bull
- 게임
- GIT
- Sequelize
- cookie
- OCR
- mongoose
- dfs
- JavaScript
- Queue
- 정렬
- react
- MySQL
- Today
- Total
포시코딩
2월3일 - devCity 프로젝트 시작 본문
새 프로젝트 시작하고 이틀동안 기획하느라 TIL 쓸 거리도 안생기고 시간조차 없다가 이제야 쓴다.
새롭게 프로젝트를 시작하며 겪은 문제들에 대해 정리해보았다.
multer 이미지 파일명 한글 깨짐 현상
예전에 multer 사용할 때 파일명이 깨지는 현상이 발생하여
파일명에 대해
file.originalname = Buffer.from(file.originalname, 'latin1').toString('utf8');
이렇게 세팅해주는 과정을 거쳐 해결했었는데
비슷하게 문제를 겪어 이 방법을 알려줬던 다른팀의 한분이
새로운 해결 방법을 알려주셨다.
'Content-Type': 'multipart/form-data; charset=UTF-8'
서버로 이미지 저장 요청을 보낼 때 header에 위 내용을 실어 보내면 처음 방법처럼 안해도 된다고 한다.
이 방법은 나중에 하게 되었을 때 잘 되나 확인 필요
controller에서 request 못받는 현상
예전에도 프로젝트 새로 시작했을 때 겪었던 문제인데
단순히 body-parser를 미들웨어로 등록해주지 않아서 발생한 문제다.
app.js
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.js에 위 내용 추가로 해결
sequelize/config/config.js에서 env 못읽는 현상
AccessDeniedError [SequelizeAccessDeniedError]: Access denied for user ''@'localhost' (using password: NO)
at ConnectionManager.connect (/Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:94:17)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async ConnectionManager._connect (/Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:220:24)
at async /Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:174:32
at async ConnectionManager.getConnection (/Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:197:7)
at async /Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/sequelize.js:304:26
at async MySQLQueryInterface.tableExists (/Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/dialects/abstract/query-interface.js:102:17)
at async Admin.sync (/Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/model.js:939:21)
at async Sequelize.sync (/Users/seonghun/code/sample/dev_shop/node_modules/sequelize/lib/sequelize.js:376:9) {
parent: Error: Access denied for user ''@'localhost' (using password: NO)
at Packet.asError (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/packets/packet.js:728:17)
at ClientHandshake.execute (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/commands/command.js:29:26)
at Connection.handlePacket (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/connection.js:487:32)
at PacketParser.onPacket (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/connection.js:94:12)
at PacketParser.executeStart (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/connection.js:101:25)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Readable.push (node:internal/streams/readable:234:10) {
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000',
sqlMessage: "Access denied for user ''@'localhost' (using password: NO)",
sql: undefined
},
original: Error: Access denied for user ''@'localhost' (using password: NO)
at Packet.asError (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/packets/packet.js:728:17)
at ClientHandshake.execute (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/commands/command.js:29:26)
at Connection.handlePacket (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/connection.js:487:32)
at PacketParser.onPacket (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/connection.js:94:12)
at PacketParser.executeStart (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/packet_parser.js:75:16)
at Socket.<anonymous> (/Users/seonghun/code/sample/dev_shop/node_modules/mysql2/lib/connection.js:101:25)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Readable.push (node:internal/streams/readable:234:10) {
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000',
sqlMessage: "Access denied for user ''@'localhost' (using password: NO)",
sql: undefined
}
}
(검색을 위해 접은글에 에러내용 넣어놓음)
분명히 env에 세팅된대로 sequelize를 통해 migrate해서 DB랑 table도 잘 만들었는데
이상하게 model들의 연결이 안되고 있었다.
웃긴건 위 코드 그대로 다른 프로젝트에서는 잘 되고
심지어 같은 프로젝드에 대해 다른 사람 pc에서도 잘 된다는걸 들었을 때 그냥 멘붕 🙉
다행히도 비슷하게 겪었던 일이 있어
env 파일의 경로 문제로 생각되어 경로를 이리저리 바꿔보았다.
첫 번째 방법
config.js와 같은 경로인 sequelize/config에 env파일을 넣고 아래와 같이 path를 변경했다.
// require('dotenv').config({ path: '../../.env' });
require('dotenv').config({ path: './.env' });
결과는 잘 됐지만 이럴 경우 나중에 migration 파일을 만들어 sequelize-cli를 통해 작업할 때
문제가 생길 가능성도 있고
제일 문제가 될 수 있는 다른 곳에서 env를 가져다 쓰는 상황과
env파일의 위치를 찾기 힘들어진다는 점 때문에 보류
두 번째 방법
// require('dotenv').config({ path: '../../.env' });
require('dotenv').config();
아예 경로를 없애 봤는데 잘됐다..
저번에는 경로가 없어서 문제였는데
도대체 뭘까 .. 일단 이 방법을 채택하여 사용하기로 했는데
너무 찝찝.. 나중에 다른 팀원들과 merge하며 문제 없는지 확인해봐야 할 것 같다.
'TIL' 카테고리의 다른 글
2월6일 - Thuner Client에서 cookie 세팅하기 (0) | 2023.02.06 |
---|---|
2월5일 - [CSS] 테이블 row에 마우스 오버 시 하이라이트 효과 주기 (0) | 2023.02.05 |
1월31일 - TypeScript: Utility Type (1) | 2023.01.31 |
1월30일 - 통합 테스트(Integration Test) - 작성중 (0) | 2023.01.30 |
1월29일 - Test Code 작성하면서 궁금한거 정리 (0) | 2023.01.29 |