NodeJs에 대한 자습서를 따르려고합니다. 나는 내가 놓친 것으로 생각하지 않지만 process.env.NODE_ENV내가 얻는 유일한 가치를 부를 때마다 정의되지 않습니다. 내 연구에 따르면 기본값은 '개발'이어야합니다. 이 값은 어떻게 동적으로 설정되며 초기에 어디에 설정됩니까?
NodeJs에 대한 자습서를 따르려고합니다. 나는 내가 놓친 것으로 생각하지 않지만 process.env.NODE_ENV내가 얻는 유일한 가치를 부를 때마다 정의되지 않습니다. 내 연구에 따르면 기본값은 '개발'이어야합니다. 이 값은 어떻게 동적으로 설정되며 초기에 어디에 설정됩니까?
답변:
process.env는 환경에 대한 참조이므로 변수를 설정해야합니다.
Windows에서 환경 변수 를 설정하려면 다음 을 수행하십시오 .
SET NODE_ENV=development
OS X 또는 Linux :
export NODE_ENV=development
export NODE_ENV=development작업하기 전에 Mac 터미널에서 실행 했습니다 react-native run-ios. 디버깅 할 때의 값 process.env.NODE_ENV은 정의되지 않습니다.
팁
에서 package.json:
"scripts": {
"start": "set NODE_ENV=dev && node app.js"
}
에서 app.js:
console.log(process.env.NODE_ENV) // dev
console.log(process.env.NODE_ENV === 'dev') // false
console.log(process.env.NODE_ENV.length) // 4 (including a space at the end)
따라서 이것은 더 나을 수 있습니다.
"start": "set NODE_ENV=dev&& node app.js"
또는
console.log(process.env.NODE_ENV.trim() === 'dev') // true
"start": "set NODE_ENV=dev&& node app.js"
console.log(process.env.NODE_ENV.length) // 4 (끝에 공백 포함)
console.log(('' + process.env.NODE_ENV).trim() === 'dev') // true경우에도 오류가 발생하지 않으므로 더 안전 합니다.
* nix (Linux, OS X 등)를 사용하는 사람들에게는 두 번째 내보내기 명령을 통해이를 수행 할 이유가 없으므로 호출 명령의 일부로이를 연결할 수 있습니다.
NODE_ENV=development node server.js
더 쉬워요? :)
cross-env npm 패키지를 사용할 수 있습니다 . 환경 변수 트리밍을 처리하고 다른 플랫폼에서 작동하는지 확인합니다.
프로젝트 루트에서 다음을 실행하십시오.
npm install cross-env
그런 다음 package.json의 스크립트에서 다음을 추가하십시오.
"start": "cross-env NODE_ENV=dev node your-app-name.js"
그런 다음 터미널의 프로젝트 루트에서 다음을 실행하여 앱을 시작하십시오.
npm start
그런 다음 환경 변수를 앱에서로 사용할 process.env.NODE_ENV수 있으므로 다음과 같은 작업을 수행 할 수 있습니다.
if (process.env.NODE_ENV === 'dev') {
// Your dev-only logic goes here
}
package.json에서 우리는 아래와 같이 구성해야합니다 (Linux 및 Mac OS에서 작동)
중요한 것은 아래의 빌드 명령 다음에 "export NODE_ENV = production"입니다.
"scripts": {
"start": "export NODE_ENV=production && npm run build && npm run start-server",
"dev": "export NODE_ENV=dev && npm run build && npm run start-server",
}
개발 환경의 경우 "npm run dev"명령을 실행해야합니다
프로덕션 환경의 경우 "npm run start"명령을 실행해야합니다
OS 때문입니다
package.json에서 스크립트를 가지고 있는지 확인하십시오 (app.js는 실행할 주요 js 파일이며 NODE_ENV는 .env 파일에 선언되어 있습니다).
"scripts": {
"start": "node app.js",
"dev": "nodemon server.js",
"prod": "NODE_ENV=production & nodemon app.js"
}
창문 용
또한 NODE_ENV = development를 갖는 .env 파일 변수를 설정하십시오.
.env 파일이 .config 폴더의 폴더에있는 경우 app.js (기본 js 파일)에 지정해야합니다
const dotenv = require ( 'dotenv'); dotenv.config ({경로 : './config/config.env'});
응용 프로그램에서 가능한 빨리 dotenv를 요구하고 구성하십시오.
require('dotenv').config()
코드로 설정할 수도 있습니다 (예 :
process.env.NODE_ENV = 'test';
heroku config:set NODE_ENV="production"