如何在 Windows 上使用 nodemon 设置 NODE_ENV= Production ?

Sab*_*san 2 windows powershell node.js nodemon

"scripts": {\n    "start": "SET NODE_ENV=staging && nodemon app",\n    "production": "set NODE_ENV=production && nodemon app",\n    "test": "echo \\"Error: no test specified\\" && exit 1"\n  },\n
Run Code Online (Sandbox Code Playgroud)\n

它不工作 \xe2\x9a\x92

\n

我的临时端口是 3000,我的生产端口是 5000,但无论我做什么,nodemon 都不会获取该值。

\n

mkl*_*nt0 6

可能的问题是前面的空格字符&&成为环境变量值的一部分,因此值是staging and production - 注意尾随空格 - 而不是stagingand production

避免这种情况的最简单方法是删除前面的空格&&(看起来很尴尬,但很有效):

"scripts": {
    "start": "SET NODE_ENV=staging&& nodemon app",
    "production": "set NODE_ENV=production&& nodemon app",
    "test": "echo \"Error: no test specified\" && exit 1"
  }
Run Code Online (Sandbox Code Playgroud)

一般来说,为了避免此类问题,最好使用cmd.exe形式
set "variable=value"
来分配变量值,即将名称、=和值括"..."起来,这会显式地界定值,而不管后续(未加引号的)空白;因此,以下内容也应该有效(按照 JSON 的要求,嵌入"字符转义为)。\"

"scripts": {
    "start": "SET \"NODE_ENV=staging\" && nodemon app",
    "production": "set \"NODE_ENV=production\" && nodemon app",
    "test": "echo \"Error: no test specified\" && exit 1"
  }
Run Code Online (Sandbox Code Playgroud)