IT

왜 process.env인가.NODE_ENV가 정의되지 않았습니까?

itgroup 2022. 10. 18. 21:40
반응형

왜 process.env인가.NODE_ENV가 정의되지 않았습니까?

NodeJS는 NodeJS에 대응하고 있습니다.가 놓친 게 것 요. 제가 마다요.process.env.NODE_ENV되는 유일한 은 " " " 입니다.undefined제 연구에 따르면 기본값은 다음과 같습니다.development이 값은 어떻게 동적으로 설정되며 처음에 어디에 설정됩니까?

process.env는 환경에 대한 참조이므로 변수를 설정해야 합니다.

Windows에서 환경변수를 설정하려면:

SET NODE_ENV=development

MacOS/OS X 또는 Linux:

export NODE_ENV=development

팁들

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

*nix(Linux, OS X 등)를 사용하는 사용자는 두 번째 내보내기 명령을 사용할 필요가 없습니다. 호출 명령의 일부로 연결할 수 있습니다.

NODE_ENV=development node server.js

간단하죠? :)

Windows에서 노드를 조작할 때 이 문제가 발생했습니다.

앱을 실행하려는 사람이 이러한 변수를 설정하도록 요구하는 것이 아니라 애플리케이션 내에서 폴백을 제공했습니다.

var environment = process.env.NODE_ENV || 'development';

실제 가동 환경에서는 통상적인 방법(SET/export)에 따라 정의합니다.

cross-env npm 패키지를 사용할 수 있습니다.환경변수를 트리밍하고 다양한 플랫폼에서 동작하도록 합니다.

프로젝트 루트에서 다음을 실행하십시오.

npm install cross-env

그럼 소포에 넣어주세요.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
}

포장되어 있습니다.다음과 같이 구성해야 합니다(Linux 및 Mac OS에서 작동).

중요한 것은 아래 빌드 명령어 뒤에 있는 "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" 명령을 눌러야 합니다.

express 버전을 사용하는 사용자를 위한 macOS4.x.x 을 합니다.DOTENV다음과 같이 .

  1. 인 한 후, 「Import」, 「Import」, 「Import」, 「Import」를 실시합니다.require('dotenv').config({path: path.resolve(__dirname+'/.env')});

  2. 루트 디렉터리에 파일 '.env'를 만들고 다음과 같은 변수를 추가합니다.

    NODE_ENV=development ★★★★★★★★★★★★★★★★★」NODE_ENV = development

어플리케이션에서 가능한 한 빨리 dotenv를 요구 및 설정합니다.

require('dotenv').config()

UBUNTU에서의 사용:

$ export NODE_ENV=테스트

dotenv 모듈 설치( npm i dotenv --save )

require'dotenv'.config() // 변수를 사용하는 파일 내에 쓰기

console.log(process.env).NODE_ENV) // .env 파일에 저장된 값을 반환합니다.

OS에 의한 것입니다.

당신의 소포 안에.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=개발을 사용하여 .env 파일 변수를 설정합니다.

.env 파일이 예를 들어 .config 폴더의 폴더에 있는 경우 app.js(메인 js 파일)에 지정해야 합니다.

const dotenv = require dotenv'; dotenv.config 경로: '.config/config.env'};

를 사용할 수 있습니다.dotenvnpm에서 패키지를 입수할 수 있습니다.https://www.npmjs.com/package/dotenv

이를 통해 모든 구성을 에 배치할 수 있습니다..env파일

app.js의 첫 번째 요구 사항이어야 합니다.

npm install dotenv

require("dotenv").config();

저 같은 경우에는 노드 앱이 있어요.제가 구성한 방식은 클라이언트 폴더와 서버 폴더가 있습니다.이 2개의 폴더에 .env 파일을 인라인으로 했습니다.서버 파일에는 .env 파일이 필요합니다.서버 파일 내에 존재하지 않기 때문에 정의되지 않은 상태로 반환되었습니다.그것은 실수였다.

App
-client
-server
-.env

Instead I moved .env inside server file like so:

App
-client
-server
 |-.env <---here
 |-package.json
 |-and the rest of the server files...

(before this - ofcourse have the dotenv npm package installed and follow its doc)

React에서 이 Probem에 직면했다면 react-scripts@0.2.3 이상이 필요합니다.다른 환경변수에도 해당 환경변수:NODE_ENVReact에서 작업하려면 접두사가 붙어야 합니다.REACT_APP_.

저에게 문제는 pkg 라이브러리를 사용하여 앱을 실행 가능한 바이너리로 변환하는 것이었습니다.그 경우, 승인된 솔루션이 작동하지 않았습니다.그러나 다음 코드를 사용하여 문제를 해결했습니다.

const NODE_ENV = (<any>process).pkg ? 'production' : process.env.NODE_ENV;

GitHub에서 이 솔루션을 찾았습니다.

전자 Js의 경우

"scripts": {
    "start": "NODE_ENV=development electron index.js",
},

이름 프로세스를 사용하여 함수를 정의한 경우에도 이 문제가 발생할 수 있습니다.

process.env를 정의합니다.패키지에 NODE_ENV가 포함되어 있습니다.Windows/Mac/Linux용 json:

Mac(MacBook Pro 2019, 16인치, Big Sur)은 다음과 같습니다.

"scripts": {
    "build": "export NODE_ENV=prod || set NODE_ENV=prod&& npx eslint . && node --experimental-json-modules ./backend/app.js && gulp",
},

사용방법export NODE_ENV=prod || set NODE_ENV=prod&& 문자열은 Windows 및 Linux에서 사용할 수 있지만 테스트해 본 적은 없습니다.

누군가 확인해 주시면 감사하겠습니다.

안타깝게도 cross-env npm 패키지를 사용하는 것은 제 패키지에서 전혀 효과가 없었습니다.json 파일과 저는 이것을 작동시키기 위해 Mac에 오랜 시간을 투자했습니다.

저도 이 문제에 직면했어요..env 파일을 root 폴더(프로젝트 폴더가 아니라 한 단계 위)로 옮겼더니 잘 되었습니다.

확인해 보세요.당신에게도 도움이 될 수 있다

다음과 같이 코드별로 설정할 수도 있습니다.

process.env.NODE_ENV = 'test';

언급URL : https://stackoverflow.com/questions/11104028/why-is-process-env-node-env-undefined

반응형