为生产,开发,发布设置单独的变量值

时间:2016-06-20 13:44:19

标签: javascript node.js reactjs environment-variables redux

我正在尝试找出一种基于应用程序处于开发,登台或生产阶段来设置不同api端点的方法。

我见过许多开发人员使用了某些行process.env.NODE_ENV,但我尝试了这个并且收到错误说

  

属性env未定义

在我的组件和行动中尝试过这个,但没有运气。我不完全理解为什么这可以在某些地方使用而不能在其他地方使用。并且想知道是否有任何替代方案可以解决问题?

2 个答案:

答案 0 :(得分:1)

  • 终端设置中的第一个 $export NODE_ENV=dev

  • 检查是否在终端中正确设置 $printenv NODE_ENV

  • 然后在节点中,您可以访问 $console.log(process.env.NODE_ENV)

  • 因此,每当我的应用程序在启动时想要环境变量时,我都喜欢这个

    $ NODE_ENV = dev SQL_IP = 127.0.0.1 node server.js

  • 注意:直接通过终端设置的环境变量,它们会在关闭终端上消失,因此请在您的 .bashrc 文件中设置这些变量永久机器

答案 1 :(得分:1)

环境变量对于指定敏感的配置选项或甚至删除未使用的库代码非常有用(例如React)

您需要先指定第一个环境变量。

如果您使用的是Mac OS或Linux,则可以直接运行

FOO=bar npm run start

通过这种方式,您定义了process.env.FOO并创建了process.env变量。

如果更广泛地使用环境变量,您可以从better npm rum中受益。在package.json中,您可以跨平台定义环境变量:

"start-prod": {
  "command": "node ./bin/server.js",
  "env": {
    "NODE_PATH": "./src",
    "NODE_ENV": "production",
    "PORT": 8080
  }
},
"start-dev": {
  "command": "node ./bin/server.js",
  "env": {
    "NODE_PATH": "./src",
    "NODE_ENV": "development",
    "PORT": 3000
  }
},

您可以根据自己的喜好使用它,但我当然建议将NODE_ENV设置为true以用于生产版本。节点模块将识别该变量并将删除开发代码。通过这个简单的步骤,您的生产构建将变得更小。

其他用法可能包括使用环境变量:

  • 定义API密钥
  • 定义开发工具的可用性,例如Redux Devtools
  • 特定的构建设置(例如,在WebPack中启用DLL构建)
祝你好运!