dev/nodejs (11) 썸네일형 리스트형 nodejs - No 'Access-Control-Allow-Origin' header is present on the requested resource. 웹에서 api 호출을 하니 CORS 오류가 뜬다. 서로 다른 출처, 도메인끼리 통신을 허락하지 않는 것이다. 프론트는 3001 포트를 사용하고 서버는 3000포트를 사용하고 있어 서로간의 통신이 되지 않는다. 그래서 서로 확인하고 허용된 도메인만 통신이 가능하게 만들어 줘야 하는데, cors라는 라이브러리를 사용하면 쉽게 해결할 수 있다. 1. cors 라이브러리 설치 npm install cors 2. app.use(cors()) import express, { json, urlencoded } from 'express'; // express 모듈 import cors from 'cors'; const app = express(); const port = 3000; // 포트 app.use(cors({.. nodejs - address already in use 서버에 nodejs파일을 올리고 실행했는데 "address already in use" 이라는 오류를 뱉어냈다. 3000포트가 어디서 사용중이라는 것이다.. 리버스 프록시로 3000포트를 설정 해줬는데 이것때문에 알아서 포트가 가동된다..? 는 아닌 것 같아서 한번 확인 해보았다. 1. 사용중인 포트의 pid 확인 sudo lsof -i tcp:3000 2. 해당 포트 죽이기 sudo kill -9 {PID} 그래도 계속 3000포트가 살아나는 신기한 현상이 나타났다. 그런데 이름을 보니 node로 되어있었다. nodejs에서 문제가 될만한 것이 있나 찾아보았다. nodemon을 설치하고 node를 실행해서 그런거 같다. nodejs에서 변경사항을 수정하기 위해 nodemon이 돌아다니기 때문에 3000.. nodejs - controller/service로 분리, Callback function is not available with promise clients. 프로젝트를 위해 api를 만들던 중 route에서 요청과 응답, 비즈니스 로직까지 해버리니 보기가 너무 힘들어서 controller와 service로 나누어 보았다. route -> controller -> service 의 흐름으로 된다. route에서는 경로를 받고 controller에서 응답을 해준다. service는 DB에서 데이터를 가져와 다시 controller로 보내준다. 1. app.js 유저에 관한 route를 등록해준다. import express, { json, urlencoded } from 'express'; // express 모듈 const app = express(); const port = 3000; // 포트 import usersRouter from './routes.. nodejs - Cannot use import statement outside a module nodejs에서 나름 MVC패턴으로 구조를 변경하고 있는데 "Cannot use import statement outside a module" 라는 오류가 떴다. import 구문이 commonjs에서는 사용되지 않고 es6에서 사용하는 것이기 때문이었다. package.json 파일에 type필드를 "module"로 지정해줘야 했다. 이 type필드에 값이 없거나 commonjs이면 commonjs이므로 "module"로 명시해주고 es6방식을 사용하면 된다. const express = require('express'); // 아래 import구문으로 변경됨 import { Router } from 'express'; nodejs - post요청 시 body값 확인 nodejs 를 사용하면 post 요청으로 body값을 보내면 undefined가 뜬다. body-parser를 사용해야 request에서 body값을 읽을 수 있다. app.js 파일에 body-parser 코드를 추가해주면 된다. const express = require('express'); // express 모듈 const app = express(); const port = 3000; // 포트 const userRouter = require('./routes/user.js'); app.use(express.json()); // body-parser app.use(express.urlencoded({ extended: false })); // body-parser app.use('/users'.. nodejs - env파일 1. env 파일 생성 2. dotenv 패키지 추가 npm i dotenv 3. config파일에 사용 require('dotenv').config(); // 선언 필요 node js - typescript 설정 타입스크립트는 타입을 지정해줌으로써 자바스크립트의 타입 불안정을 해소해준다. 타입스크립트 컴파일러(tsc)로 자바스크립트로 컴파일되어 사용된다. 1. typescript, express, nodemon 설치 npm i express typescript @types/express npm i -D nodemon ts-node 2. tsconfig.json 파일 생성 tsc --init command not found: tsc 오류가 난다면 아래 명령어 실행 npm install typescript -g outDir : 자바스크립트 파일이 생성될 디렉토리 위치 3. app.ts 파일 생성 import express, { Request, Response } from "express"; const app = e.. node js - 요청, 응답 요청 객체에서 헤더 또는 토큰, 파라미터, 바디값 등등을 추출해서 사용해야 할 때가 있다. 또는 응답을 json으로 주거나 statusCode 등 필요한 데이터를 넘겨줘야 할 때가 있을 것이다. 요청 파라미터 : req.params[''] 또는 req.params.값 을 사용하면 된다. -> .param() 사용시 deprecated 경고가 뜬다. 쿼리스트링 : req.query['']를 사용하면 된다. 응답 json으로 전달 : send()를 이용해도 json으로 줄 수 있지만, json()이라는 명확한 함수가 있으므로 이것을 사용하는 것이 좋다. const express = require('express'); const router = express.Router(); const dbconfig = .. 이전 1 2 다음