[Node.js] 我如何在Windows上設置NODE_ENV = production?



Answers

在PowerShell中:

$env:NODE_ENV="production"
Question

在Ubuntu中它很簡單; 我可以運行該應用程序使用:

$ NODE_ENV=production node myapp/app.js

但是,這在Windows上不起作用。 有配置文件,我可以設置屬性?




如果您將Visual Studio與NTVS一起使用,則可以在項目屬性頁面上設置環境變量:

正如你所看到的,配置和平台下拉菜單是禁用的(我沒有看太多原因),但是如果你編輯.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之前如何設置變量。




對於多個環境變量, .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很容易使用:

  1. 使用npm install --save dotenv-safe
  2. 將它包含在代碼中(最好在index.js的開頭),並直接在process.env命令中使用它:
require('dotenv').load()
console.log(process.env.DB_HOST)   

不要忘記忽略 VCS中.env文件

如果.env.example “defined”變量.env.example設置為環境變量或in .env則程序會快速失敗。




如果您可以在調用相同的線路上設置參數以在Windows上啟動Node.js,那將是理想的選擇。 仔細看下面的內容,並按照說明正確運行它:

你有這兩個選擇:

  1. 在命令行中:

    set NODE_ENV=production&&npm start
    

    要么

    set NODE_ENV=production&&node index.js
    
  2. 在命令行運行“npm run start_windows”,package.json文件配置如下

    //package.json
    
    "scripts": {
      "start": "node index.js"
      "start_windows": "set NODE_ENV=production&&node index.js"
    }
    

它在Windows上工作的訣竅是你需要在“&&”之前和之後刪除空白。




這不會設置變量,但在很多情況下它是有用的。 我不會推薦將它用於製作,但如果你正在玩npm,應該沒問題。

npm install --production



在PowerShell中運行應用程序(因為&&是不允許的):

($env:NODE_ENV="production") -and (node myapp/app.js)

請注意,服務器正在執行的操作的文本輸出被抑制,並且我不確定這是否可以修復。 (擴展@ jsalonen的答案。)




Links