Study/Node.js

[노드JS] 외장 모듈 사용하기

AC 2019. 3. 9. 17:45



이제는 다른 사람이 만든 모듈을 사용하는 방법에 대해 알아보자.


앞에서 process.env 속성을 사용해서 OS 환경 변수를 확인했었다.  이 과정을 이번에는 모듈을 사용해서 확인해보자.


시스템 환경 변수를 확인하는 기능을 다른 사람이 모듈로 만들어 둔 것이 있는데, 우리는 그 모듈을 불러와 실행하면 된다.


이렇게 다른 사람이 만들어 둔 모듈을 '외장 모듈'이라고 한다.


시스템 환경 변수에 접근할 수 있는 모듈의 이름은 nconf이며, 이 모듈은 설정과 관련된 유용한 기능뿐 아니라,


시스템 환경 변수를 접근하는 기능도 포함하고 있다.


ch02_test6.js 파일을 만든 후 다음 코드를 입력해보자.


var nconf = require('nconf');

nconf.env();


console.log('OS 환경 변수의 값 : %s', nconf.get('OS'));


nconf가 모듈로 만들어져 있으므로 require() 함수를 호출하여 불러온다.

그런데 여러분이 직접 만든 모듈이 아니라면 상대 패스가 아닌 모듈의 이름만 지정해서 불러온다.

nconf 모듈은 그 모듈 안에 정의한 env() 함수를 호출하면 환경 변수에 대한 정보를 가져와서 속성으로 보관한다.

그런데 한 가지 궁금한 점이 있다. 다른 사람이 만든 모듈은 도대체 어디에 있을까? 다른 사람이 만들어 둔 모듈이 있다면 어딘가에 모듈 파일을 올려놓았을 것이다. 

npm 패키지를 사용하면 다른 사람이 만들어 올려놓은 패키지를 다운로드하여 설치할 수 있다.


※ npm의 역할은 무엇일까?

npm은 Node Package Manager의 약자로 노드의 패키지를 사용할 수 있도록 설치 및 삭제 등을 지원하는 프로그램이다.

패키지는 우리들이 만들어 본 모듈에 몇 가지 정보를 더 넣은 것이라고 할 수 있으며, 보통 패키지를 만든 후 다른 사람이 사용할 수 있도록 인터넷에 올려 공유한다. npm 프로그램은 이렇게 인터넷에 올려 공유하는 노드 패키지를 다운로드하여 설치할 수 있도록 도와준다.

명령 프롬프트를 열고 [brackets-nodejs] 폴더 안에 있는 [NodeExample1] 폴더로 이동한 후 다음 명령을 실행하여 nconf 패키지를 설치하자.



※ 방화벽에 막혀 있는 경우 프록시 설정이 필요할 수 있다.


npm 명령을 실행했을 때 'In most cases you are behind a proxy ...' 와 같은 메시지가 포함된 오류가 발생하는 경우도 있다.

이것은 방화벽에 막혀 있는 사내 인터넷을 사용하는 경우에 자주 발생한다. 이런 오류는 프록시 서정을 하면 해결될 수도 있다.

프록시 설정 방법은 다음과 같다.


(1) 프록시 서버의 호스트 이름과 포트를 확인한다.

아래 명령어를 입력하고 ESTABLISHED로 표시된 주소 중 프록시 서버가 있는지 확인한다.

"netstat"



(2) 아래 세 가지 npm 설정 명령을 실행한다.

(프록시 서버의 호스트 이름과 포트가 proxy.techtown.org:8080이라고 가정한 경우)


npm config set proxy http://proxy.techtown.org:8080

npm config set https-proxy http://proxy.techtown.org:8080

npm config set strict-ssl false




이제 명령 프롬프트 창에서 ch02_test6.js 파일을 실행하면 OS 환경 변수의 값을 확인할 수 있다.





※ npm으로 설치한 패키지는 NodeExample1\node_modules 폴더 안에 설치 되어있다.







이 안에 nconf 폴더가 있는 것을 확인할 수 있다.

그렇다면 프로젝트별로 패키지 설치가 가능하다고 이해할 수 있다.

그런데 새로운 프로젝트를 만들었다면 매번 npm으로 외부 패키지를 설치해야 될까?

아니다. 만약 모든 프로젝트에 적용하고 싶다면 [node_modules] 폴더를 프로젝트의 상위 폴더인 [brackets-nodejs] 폴더로 옮기면 간단하게 해결할 수 있다.

혹은 설치할 때부터 상위 폴더에 설치하면 해결이 된다.

메인 파일이 실행될 때는 먼저 현재 폴더에 [node_modules] 폴더가 있는지 확인하고 만약 없다면 상위 폴더를 검색하자.

그래도 찾지 못한다면 상위 폴더를 순차적으로 검색한다.





혹시 다른 프로젝트나 PC에서 만들어 놓은 프로그램을 실행하려 할 때 설치한 외부 패키지가 많다면 일일이 다시 설치해야하는 번거로움이 생긴다. 이 때 노드에서는 외부 패키지의 수만큼 package.json 파일 안에 설치한 패키지들의 정보를 넣어둘 수 있다.

다음과 같이 진행하자.

npm init


위 그림과 같이 나오면 name: 질문에는 'node'로 입력하고 나머지는 계속 Enter를 눌러주자.

name 질문에 입력하는 값은 소문자로 된 영문 이름이면 된다. 그러면 마지막에 현재 폴더인 [NodeExample1]폴더 안에 package.json 파일이 만들어진다.




▲ 명령프롬프트 name의 질문에 적당한 이름을 넣고 엔터를 누르자!


{

  "name": "nodeexample1",

  "version": "1.0.0",

  "description": "",

  "main": "calc.js",

  "dependencies": {

    "nconf": "^0.10.0"

  },

  "devDependencies": {},

  "scripts": {

    "test": "echo \"Error: no test specified\" && exit 1"

  },

  "author": "",

  "license": "ISC"

}


▲ package.json을 메모장으로 열어보면 위와 같은 정보가 담겨 있다.

이제 명령 프롬프트를 열고 nconf 모듈을 삭제한 후 다시 설치한다. 다시 설치할 때는 npm 명령어에 --save 옵션을 추가하자.




▲ nconf 삭제



▲ nconf 재설치



이제 package.json 파일을 다시 열어보면 "dependencies" 속성이 추가된 것을 볼 수 있다.






이렇게 설치한 패키지의 정보가 모두 들어간 package.json 파일이 만들어졌다. 이 프로젝트에서 사용한 모듈을 다른 PC에서 그대로 사용하고 싶다면 package.json 파일만 다른 PC로 옮긴 후 다음 명령을 입력하면 그 안에 들어 있는 모든 패키지가 한꺼번에 설치된다.


명령어 : npm install




LIST