Node.js

Node.js - 웹서버 만들기

수업소개

Node.js는 웹서버 기능을 가지고 있습니다. 이런 특성을 이용해서 컨텐츠를 프로그래밍적으로 생산할 수 있게 됩니다. 여기서는 Node.js를 웹서버로 구동하는 방법을 살펴보겠습니다. 

 

 

 

강의

 

 

 

소스코드

아래의 코드 중 9행의 내용은 아래와 같이 변경해야 합니다. 

response.writeHead(404);
response.end();
return;


 

var http = require('http');
var fs = require('fs');
var app = http.createServer(function(request,response){
    var url = request.url;
    if(request.url == '/'){
      url = '/index.html';
    }
    if(request.url == '/favicon.ico'){
      return response.writeHead(404);
    }
    response.writeHead(200);
    response.end(fs.readFileSync(__dirname + url));

});
app.listen(3000);

 

 

 

참고

web1 - HTML & Internet 수업의 소스코드

 

댓글

댓글 본문
작성자
비밀번호
  1. 코딩
    감사합니다!
    localhost:3000 눌러도 안 됐던 이유가 그러면
    main.js 파일로 연결 해야하는데 전에 설치 동영상에서 만든
    helloworld.js 파일로 연결이 되어서 그런 건가요??
    대화보기
    • 3000안뜨시는분들 이유:
      nodejs 설치 동영상과 이번 동영상에서 파일이름이 약간 불일치함

      해결:
      1.바탕화면에 nodejs 만들었죠? 거기에 알집푼것들 전부넣으세요
      2.main.js.도 바탕화면 nodejs 폴더에 넣으세요
      3.cmd 창에 c:\Users\님컴터\nodejs 현재 여기까지 경로 만드시고,node main.js 치고 엔터하시면 되요(아마 localhost:3000이 접속하게 하는 서버오픈?그런거인듯...)
      4.다시 크롬에 localhost:3000치세요

      그럼 나오네요...
    • 도토리묵
      호우! 감사합니다
    • 호두
      감사합니다.
    • 졍이
      internal/modules/cjs/loader.js:583
      throw err;
      ^

      Error: Cannot find module '/home/cabox/workspace/main.js'
      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
      at Function.Module._load (internal/modules/cjs/loader.js:507:25)
      at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
      at startup (internal/bootstrap/node.js:283:19)
      at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

      -----------------------------------------------------------------------------
      위와 같은 오류는 main.js가 있는 폴더에서 실행하지 않아 발생하는 오류인 것 같습니다.
      pwd 명령어로 현재 위치를 파악한 후 main.js가 있는 폴더로 이동하여 실행시켜보세요!
      저는 이렇게 해결했는데 그래도 안 된다면....ㅜㅜ
    • 지미츄
      감사합니당!!
    • 테디
      와 진짜 감사합니다ㅠㅠ 한 번에 해결됬어요ㅠ
      대화보기
      • 나마코엘
        설명해주신거 다 잘 됩니다.
      • JuicyFresh
        확인
      • 코드를 치고싶어요!
        혹시 윈도우즈를 쓰시는 분들은 오류가 났을때 cmd 창에서 cd 띄어쓰기 하시고 node main.js가 있는 폴더의 경로를 그대로 복사해와서 붙여넣기 하신다음에 node main,js를 입력하시면 됩니다.
        ex)C:\Users\\web1_html_internet-master\web1_html_internet-master>node main.js
      • node study
        위 동영상에 있는 에디터는 atom 쓰신건가요?? 제거랑 좀 달라서요
      • 파일위치도 제대로고 9행도 수정된 코드로 복붙했는데, local host에서 연결이 거부되어 숫자를 바꿔봐도 계속 안돼요,,ㅠㅠ 왜그럴까요?

        - 방금 익스플로러에서 해봤더니 되길래 다시 크롬에서 하니까 되네요?....왜 안됐던거지... 허허
      • 소금돌
        어렵네요.
      • 김귀인
        ㅎㅎ
      • 코베
        코베 완료!
      • twinpooh@gmail.com
        카렌 에델 웅 완료
      • Jinsu Kim
        삭제 했다가. 재설치 해보니 되네요...감사합니다 .^^
        대화보기
        • Jinsu Kim
          감사합니다..재설치 해봤는데 동일하네요.ㅠㅠ 에휴..
          대화보기
          • jo_onc
            노드 js 재설치 한 번 해보세요!
            대화보기
            • Jinsu Kim
              C:\Program Files\nodejs>node C:\Works\WEB\Autoset\public_html\web2_javascript-master\main.js
              module.js:550
              throw err;
              ^

              Error: Cannot find module 'C:\Works\WEB\Autoset\public_html\web2_javascript-master\main.js'
              at Function.Module._resolveFilename (module.js:548:15)
              at Function.Module._load (module.js:475:25)
              at Function.Module.runMain (module.js:694:10)
              at startup (bootstrap_node.js:204:16)
              at bootstrap_node.js:625:3

              아.전 이런 에러가 뜨네요..ㅠㅠ 구글에서 에러 원인찾기도 힘네요. 도움 부탁드립니다.
            • BY Chin
              안녕하세요
              저는
              "사이트에 연결할 수 없음
              localhost에서 연결을 거부했습니다.
              Google에서 localhost 2000 검색
              ERR_CONNECTION_REFUSED"
              문구만 뜨는데 무엇이 문제일까요?
              참고로바탕파면에 nodejs라는폴드를 만들고 그안에
              모든 소스코드을 저장했습니다.
              cmd에서는
              > node main.js
              node main.js
              ^^^^
              SyntaxError: Unexpected identifier라고 뜨고요..

              혹시 visual studio code를 사용해서 그런가요? helloworld는 문제 없이 뜼거던요..
            • cheet0ss
              3개월이나 지난 글이지만 답변이 없어서
              호오옥시나 하는 마음에
              댓글 남겨봅니다.

              node.js 라는 프로그램을 실행시키시는 게 아니고
              index.html이라는 파일이 있는 곳에
              main.js라는 파일을 만드셨다면
              cmd.exe(명령프롬프트?)를 실행시키셔서
              해당 폴더로 이동하신 후에 거기서
              node main.js
              를 실행하시면 됩니다.

              너무 늦었지만 꼭 성공하시길 바래요
              이미 해결이 되셨다면 더 좋구요
              대화보기
              • 엔로그
                윈도우라면 방화벽, 리눅스는 netstat 으로 확인할 수 있는걸로 알아요
                대화보기
                • netstat -a -o
                  대화보기
                  • 고스트프리
                    포트 : 3000이 이미 어딘가 쓰인다는 걸 알아낼수있는 방법있을까요?
                    2000으로 바꾸니까 되네요...
                  • 치킨
                    ㄳㄳ
                    대화보기
                    • 초급자
                      계속 사이트에 연결할 수 없음 이라고 뜨는데 왜 이러는 걸까요? 코드도 그대로 붙여 놓고 node 실행도 파일이 있는 디렉토리에서 실행되었는데요 그렇네요.
                    • 삼고잉
                      잘봤습니다
                    • 이나윤
                      node main.js

                      하고 localhost:3000 들어가면 빈화면으로 뜨는데 해결방법좀 알려주세요 ㅠㅜ 폴더도 맞게 들어갔고 파일도 그대로 받았습니다..

                      ->이게 맞는지는 모르겠지만 web 시리즈를 공부하면서 bitmami를 깔았었는데 들어가서 서버 다 끄고 하니까 됐어요!
                    • nodejs를 공부하다보니 궁금한게 생겼는데요
                      php는 apache를 설치해서 공유기 dns를 이용하면 집에서 웹서버를 운영 가능하잖아요.... 다른 기기에서 사이트 접속도 가능하고요..
                      nodejs도 가능한가요??
                      안되면 nodejs는 호스팅업체의 도움을 받는 방법 밖엔 없나요?
                    • nomadlife
                      저도 타이핑했더니 에러나길래 다시 봤더니,, 슬래쉬 역슬래쉬를 바꿔서 넣었었네요,, ㅎㅎ
                      대화보기
                      • 복붙하면 되는데 직접 똑같이 타이핑 쳐서 하면 안되네요,,ㅠㅠ,,
                      • J Gong
                        저는 아래와 같이 뜹니다. 포트 넘버를 여러번 바꿔 보았지만 같아요.
                        이럴 경우에는 어떻게 해야 하나요~? ㅠㅠ

                        This site can’t be reached
                        localhost refused to connect.
                        Search Google for localhost 3000
                        ERR_CONNECTION_REFUSED
                      • 감사합니다.
                      • n1tjrgns
                        그리고 자꾸 atom이
                        the edito has crashed라면서 작동이 멈추는데 이유가 뭘까요...
                        에러코드도없고 그냥 켜놓고 일정시간이 지나면 에디터가 말썽이네요..
                      • n1tjrgns
                        main.js 까지 작성을 한 후에

                        node main.js를 입력할 때
                        node.js exe에서 입력을 하면 Unexpected identifier 에러가뜨는데
                        node.js command prompt에서 하면 되는데
                        왜 그런건가요??
                        node.js에서 동작이 되어야하는거 아닌가요??
                      • 감사합니다ㅠㅠㅠ 됩니다ㅎㅎㅎ
                        대화보기
                        • egoing
                          이미 3000번 포트에서 무엇인가 실행되고 있다는 뜻이에요.

                          app.listen(3000); 의 3000을 다른 수로 바꿔보세요.
                          대화보기
                          • mayoui-MacBook-Pro:nodejs yohan$ node main.js
                            events.js:183
                            throw er; // Unhandled 'error' event
                            ^

                            Error: listen EADDRINUSE :::3000
                            at Object._errnoException (util.js:992:11)
                            at _exceptionWithHostPort (util.js:1014:20)
                            at Server.setupListenHandle [as _listen2] (net.js:1355:14)
                            at listenInCluster (net.js:1396:12)
                            at Server.listen (net.js:1480:7)
                            at Object.<anonymous> (/Users/yohan/Desktop/nodejs/main.js:15:5)
                            at Module._compile (module.js:652:30)
                            at Object.Module._extensions..js (module.js:663:10)
                            at Module.load (module.js:565:32)
                            at tryModuleLoad (module.js:505:12)


                            //이렇게 에러가 뜨는건 왜 그런걸까요?ㅠㅠ 이거 때문에 진도를 못나가고 있네요
                          • 바다의왕자
                            음..node웹서버를 활성화하는게 cmd에서 node 실행하고 node main.js를 하면되는건가요?

                            node main.js
                            ^^^^

                            SyntaxError: Unexpected identifier


                            해결 방법은요?

                            여기서 막혀 진행을 할 수 없습니다.
                          • 기존 노드 강의에서 app.get(url)로 받는거랑
                            request.url == 로 받는거랑
                            무슨 차이인가요??
                          • egoing
                            잘 하셨습니다!
                            대화보기
                            • 박꽁치
                              음..node웹서버를 활성화하는게 cmd에서 node 실행하고 node main.js를 하면되는건가요?

                              node main.js
                              ^^^^

                              SyntaxError: Unexpected identifier

                              이렇게 뜨고, 아니나 다를까 크롬에서 localhost:3000 하니까 사이트에 연결할 수 없음 나오네요

                              ---------------- 해결했습니다~ cmd에서 해당 파일들이 있는 폴더로 이동해서 명령어 입력하니 되네요!
                            • Seo Yun Seok Tudoistube
                              이렇게 핫한 강의를 왜 15명 밖에 못봤을까요?
                              아마도 꼭 회사를 다니지 않아도 우리가 하루동안에 처리할 정보의 양이 너무 많은게 이유인거 같습니다.
                              감사합니다.
                            • Hyunki Yu
                              >node 를 통해 노드콘솔로 진입하면 나오는방법을 몰라 한참을 헤매었네요
                              ctrl + c 를 두번누르면 다시 명령프롬프트로 나올수있습니다.
                            버전 관리
                            egoing
                            현재 버전
                            선택 버전
                            graphittie 자세히 보기