【问题标题】:nodemon, babel-node: how to set environment variable?nodemon,babel-node:如何设置环境变量?
【发布时间】:2017-12-08 14:15:26
【问题描述】:

开发环境从这个命令开始:

nodemon -w src --exec \"babel-node src --presets es2015,stage-0\"

如何创建全局变量(或process.env 变量)__DEV__ = true

【问题讨论】:

  • 如果你在 bash 中运行,它只是 __DEV__="true" nodemon -w src --exec \"babel-node src --presets es2015,stage-0\"。它可能会以字符串的形式出现,您必须对其进行解析或依赖它的缺失来判断真实性/虚假性。
  • 谢谢!正如我所见过的所有讨论中所建议的那样,我已经尝试过不带引号的方法,但它没有用。
  • 你想在哪里创建这个变量?

标签: javascript node.js babeljs nodemon


【解决方案1】:

您可以将"env" 属性添加到nodemon.json,如下所示:

...
"env": {
    "__DEV__": "true"
}

或者您可以在package.json 中将__DEV__="true" 添加到start 脚本。 两者都为我工作。

【讨论】:

  • 这不是一个好方法,因为环境变量将被推送到存储库中。最好的方法是使用env 文件并忽略gitignore 文件。
【解决方案2】:

您可以使用您的环境信息将“nodemonConfig”属性添加到 package.json。然后在脚本部分执行 nodemon。

"nodemonConfig": {
  "restartable": "rs",
  "ignore": [
  "node_modules/**/node_modules"
  ],
  "delay": "2500",
  "env": {
    "NODE_ENV": "development",
    "NODE_CONFIG_DIR": "./config"
  }
}

【讨论】:

  • 这不是一个好方法,因为环境变量将被推送到存储库中。最好的方法是使用env 文件并忽略gitignore 文件。
  • @valdeci 否。仅当您想覆盖 env 以进行本地配置时。有很多理由要为使用它的每个人设置一个相同的环境变量。使用.env 超出了本问题的范围。
【解决方案3】:

我通常在我的项目中使用dotenv 模块。

我们只需要创建一个.env 文件并在我们的项目中需要dotenv 模块:

.env文件

 __DEV__="true"

your-script.js文件

require('dotenv').config();

console.log(process.env.__DEV__)

创建.env 文件通常是一个不错的选择,因为我们可以防止使用.gitignore 提交我们的环境文件

【讨论】:

    【解决方案4】:

    如果你不想在 nodemon 调用中处理环境变量,你可以这样做。

    1) 创建一个名为 '.env' 的文件并在其中放入如下内容: 开发=真

    2) 然后在您的应用程序入口文件中尽早放入以下行:

    require('dotenv').config();

    【讨论】:

    • 如果您打算采用这种方法,有更好的方法来包含这些值并将它们保留在范围内,而不是将它们设置为环境变量。
    【解决方案5】:

    对于 Windows:设置 DEV = true&&nodemon -w src --exec "babel-node src --presets es2015,stage-0"

    【讨论】:

      【解决方案6】:

      只需像这样在代码(服务器文件)中定义proccess.env.VARIABLE="true"

      【讨论】:

      • @AsadSaeeduddin 为什么会失败?
      • 因为环境变量的目的是允许您的进程由启动它的任何代理(即其环境)控制。如果你硬编码代码中的值,那么即使使用环境变量也没有意义,因为进程环境不再能够控制进程。
      • 不,您可以在项目@AsadSaeeduddin 的任何地方使用此变量
      • 我认为您没有理解我在说什么。如果我在我的代码中定义环境变量的值,那么获取我的代码并尝试启动它的其他人将无法为所述环境变量传递任何值。它们不再是变量,而是常量。
      • 好的,我明白了,你说得对,但在这种情况下,你不必每次启动脚本时都定义变量,特别是如果你有一个项目代理
      猜你喜欢
      • 2019-08-05
      • 2019-08-24
      • 2021-08-14
      • 2019-07-02
      • 1970-01-01
      • 2014-09-29
      • 2020-05-20
      • 2020-01-02
      相关资源
      最近更新 更多