본문 바로가기
Node.js/이론 및 용어

생활코딩 node.js 10강 에러 원인, 대처법

by tokkiC 2022. 8. 11.

생활코딩으로 node.js 강의를 따라 들으며 배우던 중

10강에서 에러가 뜨고 이해가 안되는 부분이 있어서 학습에 진행이 생겼다

혹시나 나와 같은 경우를 겪는 분들이 있을까해서 10강의 내용을 개인적으로 보충하려 한다

아래대로만 하면 짠! 하고 해결된다구

https://opentutorials.org/course/3332/21046

 

Node.js - URL로 입력된 값 사용하기 - 생활코딩

수업소개 URL에 포함된 쿼리 스트링을 해석해서 이용하는 방법을 살펴봅니다.  URL의 이해 강의 Node.js에서 URL을 통해서 입력된 값을 사용하는 방법 강의 실습하실 때 url 뒤에 ?id= 의 값을 직접 입

opentutorials.org

위 강의 내용를 보면 이전까지는 http://localhost:3000/1.html 처럼 url 의 / 뒤에 상대 경로로 페이지를 받아왔는데

http://localhost:3000/?id=CSS 와 같이 id 값을 쿼리로 받아오고 있다

따로 설명하시진 않으셨는데, url 을 우리가 직접 수정해서 1.html과 같은 부분을 ?id=CSS 와 같이 직접 바꿔주자

그리고 require('url') 을 통해 rul 모듈을 불러와서 변수 url 로 정의하여 

var queryData = url.parse(_url, true).query;   와 같이 사용해서 쿼리값으로 데이터를 받아오고 있는데

url.parse().query 를 사용한 방법은 Deprecate (오래된 기술이라 더이상 기술지원되지 않음) 되었으므로

var queryData = new URL('http://localhost:3000' + _url).searchParams;  로 대체해주면 된다

response.end(queryData.id);  부분에서도 더 이상 url.parse를 사용하지 않으니 

response.end(queryData.get(id)); 와 같이 사용하면 강의에서와 같이 출력 가능하다

전체 코드 및 주석은 아래와 같다굿

var http = require("http");
// var fs = require("fs");  // fs 모듈을 사용한 부분을 지웠으므로 주석처리
// var url = require("url");  // url.parse 가 지원안되므로 불필요
var app = http.createServer(function (request, response) {
  var _url = request.url;
  // url.parse 를 대체할 새로운 기술로 절대경로를 인자로 갖는 URL 객체를 이용한다
  const queryData = new URL("http://localhost:3000" + _url).searchParams;
  // var queryData = url.parse(_url, true).query;  // 더이상 사용, 지원되지 않는다
  console.log(queryData.get("id")); // URL 객체 내 get 메소드로 속성 가져오기
  if (_url == "/") {
    _url = "/index.html";
  }
  if (_url == "/favicon.ico") {
    response.writeHead(404);
    response.end();
    return;
  }
  response.writeHead(200);
  response.end(queryData.get("id")); // 클라이언트에게 괄호 안의 데이터를 보내고 응답을 끝낸다
});
app.listen(3000); // 3000 번 포트를 사용한다

댓글