답변:
현재 버전의 Windows는 Powershell을 기본 쉘로 사용하므로 다음을 사용하십시오.
$env:NODE_ENV="production"
@jsalonen의 답변에 따라 아래. 더 이상 유지 관리되지 않는 CMD 인 경우
set NODE_ENV=production
Node.js 애플리케이션을 실행하려는 명령 프롬프트에서 실행해야합니다.
위의 행은 명령을 실행하는 명령 프롬프트에 환경 변수 NODE_ENV를 설정합니다.
환경 변수가 단일 명령 프롬프트를 넘어 지속되도록 전역 적으로 설정하려면 제어판의 시스템에서 또는 시작 메뉴의 검색 상자에 '환경'을 입력하여 도구를 찾을 수 있습니다.
set NODE_ENV=production && node app
. package.json
이에 따라 보다 편리하게 구성하십시오 "scripts": { "start": "set NODE_ENV=production && node app" }
..
echo %NODE_ENV%
하여 현재 값을 확인할 수 있습니다 .
cross-env
팀이 혼합 운영 체제에서 작업하는 경우 사용 하는 것이이 문제에 대한 더 나은 해결책 이라고 생각 합니다. @MoOx의 답변은이 질문에 대한 답변으로 선택됩니다.
방금 독특한 구문, 크로스 플랫폼을 사용하여 환경 변수를 정의하는 데 도움이되는 멋진 Node.js 패키지를 찾았습니다.
https://www.npmjs.com/package/cross-env
다음과 같이 쓸 수 있습니다.
cross-env NODE_ENV=production my-command
꽤 편리합니다! 더 이상 Windows 또는 Unix 관련 명령이 없습니다!
PowerShell에서 :
$env:NODE_ENV="production"
set NODE_ENV=production
powershell에서 나를 위해 일하지는 않았지만 이것은 효과가있었습니다. 감사!
$env:NODE_ENV="development"; gulp runMytask
입니다. 거기에 세미콜론이 있습니다. gulp 파일은 process.env.NODE_ENV에서 조건부 논리를 사용할 수 있습니다. 설정하지 않으면 정의되지 않습니다.
cross-env NODE_ENV=production
env를 설정 해야하는 package.json에서 npm 명령을 실행하는 경우 옵션이 실제로 더 나은 솔루션입니다. $ env : NODE_ENV 옵션을 사용한 후 dev / prod에 env 세트를 남겨 두는 것은 너무 쉽습니다.
Windows에서 Node.js를 시작하기위한 호출과 동일한 회선에 매개 변수를 설정할 수 있으면 이상적입니다. 다음을주의해서보고 명시된대로 정확하게 실행하십시오.
이 두 가지 옵션이 있습니다.
명령 행에서 :
set NODE_ENV=production&&npm start
또는
set NODE_ENV=production&&node index.js
Windows에서 작동하는 요령은 "&&"전후에 공백을 제거해야한다는 것입니다. 아래 start_windows (아래 참조)로 package.json 파일을 구성했습니다. 그런 다음 명령 행에서 "npm run start_windows"를 실행하십시오.
//package.json
"scripts": {
"start": "node index.js"
"start_windows": "set NODE_ENV=production&&node index.js"
}
당신이 사용할 수있는
npm run env NODE_ENV=production
Windows와 Unix에서 모두 호환되므로 가장 좋은 방법 일 것입니다.
로부터 NPM의 실행 스크립트 문서 :
env 스크립트는 런타임에 스크립트에 사용 가능한 환경 변수를 나열하는 데 사용할 수있는 특수 내장 명령입니다. "env"명령이 패키지에 정의되어 있으면 내장 명령보다 우선합니다.
npm run env NODE_ENV=production -- node -e 'console.log(process.env.NODE_ENV)'
The --
is mandatory . 대체 node -e 'console.log(process.env.NODE_ENV)'
당신이 원하는대로 명령.
npm run env NODE_TLS_REJECT_UNAUTHORIZED=0 -- node --inspect ./etc/http-req-standalone.js
... 아무 일도 일어나지 않았습니다. 이 방법이 Windows에서 작동하는지 잘 모르겠습니다.
NTVS와 함께 Visual Studio를 사용하는 경우 프로젝트 속성 페이지에서 환경 변수를 설정할 수 있습니다.
보시다시피 구성 및 플랫폼 드롭 다운은 비활성화되어 있지만 (이 이유에 대해서는 너무 많이 살펴 보지 않았습니다) .njsproj
파일을 다음과 같이 편집 하면 다음과 같습니다.
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=development</Environment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>true</DebugSymbols>
<Environment>NODE_ENV=production</Environment>
</PropertyGroup>
그런 다음 'Debug / Release'드롭 다운은 Node.js를 시작하기 전에 변수 설정 방법을 제어합니다.
* nix에서와 같이 명령을 실행할 수있는 win-node-env 모듈을 작성했습니다 .
NODE_ENV=production node myapp/app.js
환경 변수 NODE_ENV.cmd
를 설정 NODE_ENV
하고 나머지 명령과 그 인수로 하위 프로세스를 생성하는를 작성하여 작동 합니다.
(전역 적으로) 설치하고 npm 스크립트 명령을 실행하면 자동으로 작동합니다.
npm install -g win-node-env
Visual Studio 2013의 Windows 7 64 비트에서 Node.js를 사용한 경험은 사용해야합니다.
setx NODE_ENV development
cmd 창에서. 새 값을 인식하려면 Visual Studio를 다시 시작해야합니다.
set 구문은 설정된 cmd 창의 기간 동안 만 지속됩니다.
Node.js의 간단한 테스트 :
console.log('process.env.NODE_ENV = ' + process.env.NODE_ENV);
setx를 사용할 때 'undefined'를 반환하고 setx를 사용하고 Visual Studio를 다시 시작하면 'development'를 반환합니다.
cmd
-파워 쉘이 아닙니까? 어, 창문에 와서 함께 가져와
비 명령 줄 방법은 다음과 같습니다.
Windows 7 또는 10의 경우 시작 메뉴 검색 상자에 environment를 입력하고 시스템 환경 변수 편집을 선택하십시오.
또는 제어판 \ 시스템 및 보안 \ 시스템으로 이동하여 고급 시스템 설정을 클릭하십시오.
그러면 고급 탭이 선택된 시스템 속성 대화 상자가 열립니다. 하단에는 환경 변수 ... 버튼이 있습니다. 이것을 클릭하십시오.
환경 변수 대화 상자가 열립니다.
맨 아래의 시스템 변수에서 새로 만들기 ...를 선택하십시오. 그러면 새 시스템 변수 대화 상자가 열립니다.
변수 이름과 값을 입력하고 확인을 클릭하십시오.
process.env에 새 변수를 사용할 수 있으려면 모든 cmd 프롬프트를 닫고 서버를 다시 시작해야합니다. 여전히 표시되지 않으면 컴퓨터를 다시 시작하십시오.
명확히하기 위해, 그리고 머리카락을 뽑을 수도있는 다른 사람들을 위해 ...
Windows 에서 git bash를 사용하는 경우 set node_env=production&& node whatever.js
작동하지 않는 것 같습니다 . 대신 기본 cmd를 사용하십시오. 그런 다음 set node_env=production&& node whatever.js
예상대로 작동합니다.
내 유스 케이스 :
워크 플로가 훨씬 빠르기 때문에 Windows에서 개발 하지만 프로덕션 환경에서 응용 프로그램의 개발 특정 미들웨어가 실행되지 않도록해야했습니다.
PowerShell에서 응용 프로그램을 실행하려면 ( &&
허용되지 않기 때문에 ) :
($env:NODE_ENV="production") -and (node myapp/app.js)
서버가 수행하는 작업의 텍스트 출력이 표시되지 않으며 수정 가능한지 확실하지 않습니다. (@jsalonen의 답변으로 확장)
"debug-windows": "($env:NODE_ENV=\"dev\") -and (node src/dequeue.js)"
들어 여러 환경 변수, .env
파일이 더 편리합니다 :
# .env.example, committed to repo
DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
# .env, private, .gitignore it
DB_HOST=real-hostname.example.com
DB_USER=real-user-name
DB_PASS=REAL_PASSWORD
다음과 dotenv-safe
같이 사용하기 쉽습니다 .
npm install --save dotenv-safe
.index.js
) 다음 process.env
명령 과 함께 직접 사용하십시오 .require('dotenv').load()
console.log(process.env.DB_HOST)
VCS 의 .env
파일 을 무시하는 것을 잊지 마십시오 .
변수 "정의" .env.example
가 환경 변수 또는로 설정 되어 있지 않으면 프로그램이 빠르게 실패합니다 .env
.