더북(TheBook)

이 방식에는 문제가 있습니다. 리눅스나 맥에서는 되지만, 윈도에서는 NODE_ENV를 이렇게 설정할 수 없습니다.

콘솔

$ npm start
'NODE_ENV'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

 

이럴 때 cross-env가 사용됩니다. npm으로 전역 설치합니다.

콘솔

$ npm i -g cross-env && npm i cross-env

 

다시 package.json을 다음과 같이 수정하면 됩니다.

package.json

{
  ...
  "scripts": {
    "start": "cross-env NODE_ENV=production PORT=80 node app",
    "dev": "nodemon app"
  },
  ...
}

 

앞에 cross-env를 붙임으로써 윈도에서도 실행됩니다.

Note ≣ crossenv 사건

노드와 npm 생태계를 떠들썩하게 만든 사건이 있었습니다. 이름하여 crossenv 사건입니다. 사람들이 cross-env를 설치할 때 실수로 cross-env 대신 crossenv를 설치해서 발생했는데, crossenv는 사용자의 .env 파일에 들어 있는 키들을 해커에게 전송하는 악성 패키지였던 것입니다.

다행히 발견 즉시 패키지가 차단되어 피해가 확산되지는 않았지만, 유명한 패키지와 혼동을 야기해 해킹하려는 시도가 있었다는 점에서 충격적인 사건이었습니다. 따라서 패키지를 설치할 때는 항상 주의를 기울여야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.