프로그래밍/Node.js

Node.js 정복 가이드: 설치부터 NPM 활용까지, 서버 개발 첫걸음

shimdh 2025. 2. 17. 10:06
728x90

1. Node.js: JavaScript 런타임 환경

1.1. Node.js란 무엇인가?

Node.js는 Chrome V8 JavaScript 엔진을 기반으로 구축된 JavaScript 런타임 환경입니다. 이벤트 기반(Event-driven), Non-blocking I/O 모델을 채택하여 가볍고 효율적이며, 데이터 집약적인 실시간 애플리케이션 개발에 이상적인 환경을 제공합니다. Node.js를 활용하면 JavaScript를 서버 측 애플리케이션 개발에도 사용할 수 있어, 프론트엔드와 백엔드 개발 간의 언어 장벽을 해소할 수 있습니다. 예를 들어, 웹 브라우저에서 사용하던 JavaScript 문법을 서버 개발에도 동일하게 적용할 수 있습니다.

1.2. Node.js 활용 예시

  • 간단한 웹 서버 구축: Node.js를 사용하면 단 몇 줄의 코드로 간단한 웹 서버를 만들 수 있습니다.
// http 모듈을 불러옵니다.
const http = require('http');

// 서버를 생성합니다.
const server = http.createServer((req, res) => {
  // 응답 헤더를 설정합니다.
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  // 응답 본문을 작성합니다.
  res.end('Hello, World from Node.js Web Server!\n');
});

// 3000 포트에서 서버를 실행합니다.
server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

위 코드를 server.js 파일로 저장하고 node server.js 명령을 실행하면, 웹 브라우저에서 http://localhost:3000/에 접속하여 "Hello, World from Node.js Web Server!" 메시지를 확인할 수 있습니다.

  • 파일 시스템 접근: Node.js는 파일 시스템에 접근하여 파일을 읽고 쓰는 기능을 제공합니다.
// fs 모듈을 불러옵니다.
const fs = require('fs');

// test.txt 파일에 텍스트를 작성합니다.
fs.writeFile('test.txt', 'Hello from the file system!', (err) => {
  if (err) throw err;
  console.log('The file has been saved!');

  // test.txt 파일의 내용을 읽어옵니다.
  fs.readFile('test.txt', 'utf8', (err, data) => {
    if (err) throw err;
    console.log(data); // "Hello from the file system!" 출력
  });
});

2. Node.js 설치 가이드

Node.js를 사용하기 위해 가장 먼저 해야 할 일은 시스템에 Node.js를 설치하는 것입니다. 설치 과정은 비교적 간단하지만, 올바른 버전을 선택하고 설치 과정을 정확하게 수행하는 것이 중요합니다.

2.1. Node.js 다운로드

  1. 공식 웹사이트 방문: Node.js 공식 웹사이트에 접속합니다.
  2. 버전 선택:
    • LTS(Long Term Support) 버전과 Current(최신) 버전이 제공됩니다.
    • 일반적으로 LTS 버전을 선택하는 것을 권장합니다. LTS 버전은 장기적으로 안정적인 지원과 보안 업데이트를 제공하기 때문에 프로덕션 환경에 적합합니다. Current 버전은 최신 기능 및 개선 사항을 포함하지만, LTS 버전에 비해 안정성이 다소 떨어질 수 있습니다.
  3. 운영 체제 선택:
    • 현재 사용 중인 운영 체제(Windows, macOS, Linux)에 맞는 설치 파일을 다운로드합니다.

2.2. Node.js 설치: Windows/macOS

  1. 설치 파일 실행: 다운로드 받은 .msi(Windows) 또는 .pkg(macOS) 파일을 더블 클릭하여 실행합니다.
  2. 설치 마법사 안내 따르기: 화면에 표시되는 지시에 따라 'Next' 또는 'Install' 버튼을 클릭합니다. 대부분의 경우 기본 설정을 사용하여 설치를 진행하면 됩니다. 설치 과정에서 관리자 권한이 필요할 수 있습니다.

2.3. Node.js 설치: Linux

Linux 환경에서는 터미널을 통해 Node.js를 설치하는 것이 일반적입니다. 다음은 Ubuntu/Debian 계열 Linux 배포판에서 Node.js LTS 버전을 설치하는 예제입니다.

# 패키지 목록 업데이트
sudo apt update

# curl이 없는 경우 curl 설치
sudo apt install curl

# NodeSource 저장소 추가 (LTS 버전, 예: Node.js 14.x)
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -

# Node.js 설치
sudo apt install nodejs

참고: setup_14.x14.x는 원하는 Node.js 버전으로 수정할 수 있습니다. 예를 들어, Node.js 16.x 버전을 설치하려면 setup_16.x를 사용합니다.

CentOS/RHEL 계열 Linux 배포판에 Node.js 설치 (추가 예제)

# 패키지 목록 업데이트
sudo yum update

# NodeSource 저장소 추가 (LTS 버전, 예: Node.js 14.x)
curl -fsSL https://rpm.nodesource.com/setup_14.x | sudo bash -

# Node.js 설치
sudo yum install nodejs

2.4. 설치 확인

설치가 완료된 후, 터미널 또는 명령 프롬프트에서 다음 명령어를 입력하여 Node.js와 NPM이 정상적으로 설치되었는지 확인합니다.

node -v    # Node.js 버전 확인 (예: v14.17.0)
npm -v     # NPM 버전 확인 (예: 6.14.13)

npx 사용 확인 (추가 예제)

npx는 npm 5.2.0 버전부터 함께 제공되는 도구로, 로컬에 설치되지 않은 패키지를 일회성으로 실행하거나 최신 버전의 패키지를 사용할 때 유용합니다.

npx -v # npx 버전 확인

3. NPM: Node.js 패키지 관리자

NPM(Node Package Manager)은 Node.js와 함께 설치되는 패키지 관리 도구입니다. NPM을 사용하면 개발에 필요한 라이브러리나 모듈을 손쉽게 다운로드하고 관리할 수 있습니다. 전 세계 개발자들이 제작한 방대한 오픈 소스 패키지를 활용하여 애플리케이션을 효율적으로 개발할 수 있습니다.

3.1. NPM 주요 기능 및 명령어

  1. 패키지 설치 및 관리:

    npm install 명령어를 사용하여 필요한 패키지를 간편하게 설치하고 업데이트할 수 있습니다.

     npm install <package_name>           # 특정 패키지 설치
     npm install -g <package_name>        # 특정 패키지를 전역으로 설치
     npm update <package_name>            # 특정 패키지 업데이트
     npm uninstall <package_name>         # 특정 패키지 제거
     npm list                             # 현재 프로젝트에 설치된 패키지 목록 확인
     npm list -g --depth=0                # 전역 설치된 패키지 목록 확인 (depth=0은 최상위 패키지만 표시)
     npm outdated                         # 업데이트가 필요한 패키지 목록 확인

    예를 들어, Express라는 인기 있는 웹 프레임워크를 설치하려면 다음과 같이 입력합니다.

     npm install express

    -g 옵션:
    -g 옵션을 사용하면 패키지를 전역으로 설치할 수 있습니다. 전역으로 설치된 패키지는 모든 프로젝트에서 사용할 수 있습니다.

  2. 의존성 관리:

    프로젝트에서 사용하는 모든 패키지는 package.json 파일에 기록됩니다. 이 파일은 프로젝트의 루트 디렉토리에 위치하며, 프로젝트의 메타데이터와 의존성 정보를 포함합니다. package.json 파일을 통해 프로젝트에서 사용하는 패키지와 해당 패키지의 버전을 명확하게 관리할 수 있습니다.

    package.json 파일 생성:

     npm init  # package.json 파일 생성 (여러 질문에 답변)
     npm init -y # package.json 파일 생성 (기본 설정으로 빠르게 생성)

    package.json 파일의 dependencies 섹션에는 프로젝트에 필요한 패키지와 버전 정보가 기록됩니다. 예를 들어, Express 패키지를 설치하면 package.json 파일에 다음과 같이 기록됩니다.

     "dependencies": {
       "express": "^4.17.1"
     }

    ^ 기호의 의미:
    ^ 기호는 해당 패키지의 major 버전은 고정하고, minor 버전과 patch 버전은 업데이트를 허용한다는 의미입니다. 예를 들어, "express": "^4.17.1"은 Express 4.x.x 버전 중 최신 버전을 사용하도록 지정합니다.

    package-lock.json 파일 (추가 설명):
    npm install 명령어를 실행하면 package-lock.json 파일이 생성됩니다. 이 파일은 설치된 패키지의 정확한 버전과 의존성 트리를 기록하여, 다른 환경에서도 동일한 빌드를 재현할 수 있도록 보장합니다.

  3. 스크립트 실행:

    NPM을 사용하면 package.json 파일에 사용자 정의 스크립트를 정의하고 실행할 수 있습니다. 이를 통해 개발, 테스트, 배포 등 다양한 작업을 자동화할 수 있습니다.

    package.json 파일에 스크립트 추가 예시:

     "scripts": {
       "start": "node app.js",
       "test": "mocha",
       "dev": "nodemon app.js",
       "build": "webpack",
       "preinstall": "echo 'Installing dependencies...'", // npm install 실행 전에 실행
       "postinstall": "echo 'Dependencies installed successfully!'" // npm install 실행 후에 실행
     }

    스크립트 실행:

     npm run <script_name> # 정의된 스크립트 실행
     npm start             # "start" 스크립트 실행 (위 예시에서는 node app.js 실행)
     npm test              # "test" 스크립트 실행 (위 예시에서는 mocha 실행)
     npm run dev           # "dev" 스크립트 실행 (위 예시에서는 nodemon app.js 실행)
     npm run build         # "build" 스크립트 실행 (위 예시에서는 webpack 실행)

3.2. NPM 활용 실습

  1. Node.js 및 NPM 버전 확인:

     node --version
     npm --version
  2. 새로운 프로젝트 생성 및 초기화:

     mkdir my-node-project  # 새 프로젝트 디렉토리 생성
     cd my-node-project      # 생성된 디렉토리로 이동
     npm init -y             # package.json 파일 생성 (기본 설정)
  3. Express 프레임워크 설치:

     npm install express
  4. package.json 파일 확인:

    package.json 파일을 열어 dependencies 섹션에 express 패키지가 추가되었는지 확인합니다.

     "dependencies": {
       "express": "^4.17.1"
     }
  5. lodash 패키지 설치 및 사용 (추가 예제):

    lodash는 JavaScript 유틸리티 라이브러리로, 배열, 객체 등을 다루는 데 유용한 함수들을 제공합니다.

     npm install lodash # lodash 패키지 설치

    app.js 파일을 생성하고 다음 코드를 작성합니다.

     // lodash 모듈을 불러옵니다.
     const _ = require('lodash');
    
     // 배열에서 중복된 값을 제거합니다.
     const numbers = [1, 2, 2, 3, 4, 4, 5];
     const uniqueNumbers = _.uniq(numbers);
    
     console.log(uniqueNumbers); // [1, 2, 3, 4, 5] 출력
     node app.js # app.js 파일 실행

4. Node.js 첫걸음: "Hello, World!" 예제

Node.js 설치와 NPM의 기본 개념을 이해했다면, 간단한 "Hello, World!" 예제를 통해 Node.js 애플리케이션을 실행해보겠습니다.

  1. app.js 파일 생성:

    프로젝트 디렉토리에 app.js 파일을 생성하고 다음 코드를 작성합니다.

     console.log('Hello, World from Node.js!');
  2. 애플리케이션 실행:

    터미널에서 다음 명령어를 실행합니다.

     node app.js

    터미널에 "Hello, World from Node.js!"가 출력되면 Node.js 애플리케이션을 성공적으로 실행한 것입니다.

명령줄 인수(arguments) 처리 (추가 예제)

Node.js 애플리케이션은 명령줄 인수를 process.argv 배열을 통해 접근할 수 있습니다.

// app.js
console.log(process.argv);
node app.js arg1 arg2 arg3

실행 결과:

[
  '/usr/local/bin/node', // Node.js 실행 파일 경로
  '/path/to/your/project/app.js', // 실행된 스크립트 파일 경로
  'arg1',
  'arg2',
  'arg3'
]

process.argv 배열의 첫 번째 요소는 Node.js 실행 파일의 경로이고, 두 번째 요소는 실행된 스크립트 파일의 경로입니다. 그 이후의 요소들은 명령줄에서 전달된 인수들입니다.

728x90