【问题标题】:Set separate variable values for production, development, release为生产、开发、发布设置单独的变量值
【发布时间】:2016-10-21 19:20:03
【问题描述】:

我正在尝试找出一种方法来根据正在开发、暂存或生产的应用程序设置不同的 api 端点。

我看到许多开发人员使用 process.env.NODE_ENV 行的东西,但我试过了,但我收到一个错误提示

属性环境未定义

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

【问题讨论】:

  • 一种方法是为每个分支设置不同的配置文件(如果您使用 git)。另一种方法是传递一个环境变量并根据该变量发出请求,例如 if (env == 'production') end_points = require('.prod_api');

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


【解决方案1】:
  • 终端组第一$export NODE_ENV=dev

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

  • 然后在节点中你可以像$console.log(process.env.NODE_ENV)

  • 一样访问
  • 所以每当我的应用在启动时需要环境变量时,我都会这样做

    $NODE_ENV=dev SQL_IP=127.0.0.1 节点服务器.js

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

【讨论】:

    【解决方案2】:

    环境变量对于指定敏感的配置选项甚至删除未使用的库代码(例如 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 构建)

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 2010-12-21
      • 2012-10-08
      • 2014-01-07
      • 1970-01-01
      • 2012-09-30
      • 2019-09-05
      相关资源
      最近更新 更多