Node Environmental variable on Windows

痞子三分冷 提交于 2020-06-18 13:18:32

问题


I noticed this strange behavior which is not a big deal, but bugging the heck out of me.

In my package.json file, under the "scripts" section, I have a "start" entry. It looks like this:

"scripts": {
    "start": "APPLICATION_ENV=development nodemon app.js"
}

typing npm start on a Mac terminal works fine, and nodemon runs the app with the correct APPLICATION_ENV variable as expected. When I try the same on a Windows environment, I get the following error:

"'APPLICATION_ENV' is not recognized as an internal or external command, operable program or batch file."

I have tried the git-bash shell and the normal Win CMD prompt, same deal.

I find this odd, because typing the command directly into the terminal (not going through the package.json script via npm start) works fine.

Has anyone else seen this and found a solution? Thanks!!


回答1:


For cross-platform usage of environment variables in your scripts install and utilize cross-env.

"scripts": {
    "start": "cross-env APPLICATION_ENV=development nodemon app.js"
}

The issue is explained well at the link provided to cross-env. It reads:

Most Windows command prompts will choke when you set environment variables with NODE_ENV=production like that. (The exception is Bash on Windows, which uses native Bash.) Similarly, there's a difference in how windows and POSIX commands utilize environment variables. With POSIX, you use: $ENV_VAR and on windows you use %ENV_VAR%.




回答2:


I ended up using the dotenv package based on the 2nd answer here:

Node.js: Setting Environment Variables

I like this because it allows me to setup environmental variables without having to inject extra text into my npm script lines. Instead, they are using a .env file (which should be placed on each environment and ommitted from version control).



来源:https://stackoverflow.com/questions/44164458/node-environmental-variable-on-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!