如何从package.json设置NODE_ENV进行反应

时间:2019-07-31 07:59:14

标签: javascript reactjs create-react-app development-environment staging

我在执行react app时试图从本地定位多个环境。

1. Development
2. Staging
3. Production

我还试图在任何环境中测试脱机模式。因此,我配置的脚本如下:

    "staging-server": "nodemon server.js --environment=staging",
    "staging": "concurrently -k  \"npm:staging-server\" \"NODE_ENV='staging' PORT=3003 react-scripts start\"",
    "prod": "npm run build && forever server.js --environment=production"

我能够在express中使用args来获取环境arg,但是仅当我为process.env.NODE_ENV进行控制台时,我的本地ui应用仍然显示开发。我还试图将NODE_ENV设置为同一行进行分期,但是仍然没有运气。端口设置正在运行,但是该应用程序同时在3000和3003两个端口中运行。如何摆脱这种情况,并通过提供有用的链接或代码来帮助我理解登台配置,很好

4 个答案:

答案 0 :(得分:1)

根据文档,我们无法覆盖NODE_ENV,但仍有空间创建以REACT_APP_开头的自定义变量。所以我配置为如下所示:

参考:https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables

"staging": "concurrently -k  \"npm:staging-server\" \"cross-env REACT_APP_ENVIRONMENT='staging' PORT=3003 react-scripts start\"",

在我的UI应用程序中,我可以通过将其合并来获取其值,如下所示:  console.log('REACT_APP_ENVIRONMENT => ', process.env.REACT_APP_ENVIRONMENT);

答案 1 :(得分:0)

在NODE_ENV前面使用cross-env。

npm i -g cross-env
"staging": "concurrently -k  \"npm:staging-server\" \"cross-env NODE_ENV='staging' PORT=3003 react-scripts start\"",

答案 2 :(得分:0)

最简单的方法是将其直接添加到您的命令中:

"scripts": {
    "start": "./node_modules/.bin/nodemon server.js",
    "start:prod": "NODE_ENV=prod node server.js",
  },

答案 3 :(得分:-1)

我使用REACT_APP_STAGE构建该版本,并在我的应用程序中将其用作process.env.REACT_APP_STAGE。

ggplot(df, aes(Depth, values, fill=Tax)) + geom_bar(stat="identity")+
  facet_wrap(~Year) +
  coord_flip()