【问题标题】:How to use nodemon with .env files?如何将 nodemon 与 .env 文件一起使用?
【发布时间】:2012-05-20 13:47:17
【问题描述】:

我正在使用 .env 文件来保存服务器的环境变量。如果我使用工头启动运行服务器,这将有效。但它不适用于nodemon。

我想改用 nodemon,因为它会在您修改服务器时自动重新启动。如何让 nodemon 使用 .env 文件?

【问题讨论】:

  • 我一直在使用带有dotenv 包的 .env 文件,并且非常有用,但是如果我更改 .env 文件上的一些变量并重新启动进程(例如在控制台上使用 rs 命令),我会遇到麻烦) .env 文件上的任何新更改都不会被考虑

标签: javascript web-services node.js environment-variables development-environment


【解决方案1】:
  1. 安装dotenvnpm i dotenv
  2. 在里面创建.env文件和你的变量
  3. 添加要执行的脚本

    "dev": "nodemon -r dotenv/config ./app/index.js " or
    "start": "node -r dotenv/config ./app/index.js "
    
  4. 使用npm run devnpm run start 运行应用程序

【讨论】:

    【解决方案2】:

    我有一个生产 Procfile,其中:

    web: node web.js
    

    所以我创建了一个 Procfile_dev 文件:

    web: nodemon web.js
    

    当我在开发环境中运行时:

    $ foreman start -f Procfile_dev
    

    它就像一个魅力,不影响生产。

    【讨论】:

    • 使用 Express 的 Procfile_dev 将是:web: nodemon ./bin/www
    【解决方案3】:

    你可以通过下面的命令让nodemon直接使用.env

    $: env $(cat .env) nodemon app.js
    

    请注意,如果您对 .env 进行更改,则必须重新启动它,如果 .env 文件中有任何空格,它会不喜欢它。

    【讨论】:

    • 如果你的任何变量里面有 JSON 值,这种方法就会有问题。示例:JSON={"a": "b"},因为 doublecuotes 转义。
    【解决方案4】:

    使用最新版本的 Node(自 io.js 1.6 起),您可以将 -r 标志传递给它,以在启动时要求模块。这使您可以使用 nodemon 的 --exec 直接加载 .env

    nodemon --exec 'node -r dotenv/config'
    

    这需要安装 npm 包dotenv

    【讨论】:

    • 或者只是nodemon -r dotenv/config...?
    【解决方案5】:

    将本地配置变量放在 .env 文件中,并使用以下命令运行 foreman 和 nodemon

    $ foreman run nodemon web.js
    

    【讨论】:

    • 这是一个很好的解决方案,因为如果你不想要一个Procfile,它也不会强迫你。另一种方法是在package.json 文件中使用start script sectionnpm startnodemon 将使用该文件。如果您将Heroku 用于生产,它现在会在部署时生成一个Procfile,它也使用npm start
    【解决方案6】:

    到目前为止,这对我来说效果很好,

    nodemon  -w . -w .env index.js
    

    它是如何工作的:
    "-w ." 告诉 nodemon 监视当前目录中的文件
    "-w .env" 告诉 nodemon 监视 .env 文件
    index.js”只是发生更改时要运行的文件(可以是任何文件)

    【讨论】:

      【解决方案7】:

      线程死灵术!

      使用grunt-env 从您的heroku 配置中加载环境变量。

      【讨论】:

      • 这有助于我在 Gruntfile.js 中使用我的 .env 文件。正是我想要的。
      【解决方案8】:

      分三步

      1. 在根文件夹中创建文件 > .env
      # .env ======
      PORT=5000
      WHO_AM_I="Who Knows"
      
      1. 安装 dotenv
      2. 运行以下命令
      "dev": "nodemon -r dotenv/config src/app.js"
      

      您可以使用 > process.env.varible_name 访问您定义的变量

      【讨论】:

        【解决方案9】:

        如果你想在 nodemon 中运行 Typescript 并且需要一个 特定 .env 文件和 dotenv 那么你可以这样做:

        package.json 脚本中:

        "dev": "nodemon -r dotenv/config src/myApp.ts dotenv_config_path=/path/to/your/env/file",

        nodemon.json 中的一行告诉nodemon 在遇到 Typescript 扩展时使用ts-node

        "execMap": {"ts": "node -r ts-node/register"},

        这对于使用开发 .env 文件(例如 .env.development.local)进行本地开发工作很有用,而将主 .env 文件用于实时生产变量。

        【讨论】:

          【解决方案10】:

          使用 -w 键指定 nodemon 要额外监视的内容。

          "scripts": {
              "dev": "env-cmd nodemon -w app -w *.js -w .env server.js"
          }
          

          别忘了重新运行npm run dev

          【讨论】:

            【解决方案11】:

            Heroku Procfile

            更改:web: node app.js 到 web: nodemon app.js

            【讨论】:

              【解决方案12】:

              要将 dotenv 包和任何声明的 .env 变量加载到环境中,您可以执行以下操作:

              nodemon -r dotenv/config myapp.js
              

              【讨论】:

                猜你喜欢
                • 2013-12-10
                • 2022-09-25
                • 2016-08-29
                • 1970-01-01
                • 2019-12-25
                • 2016-01-05
                • 2020-12-03
                • 2018-01-14
                • 2020-04-03
                相关资源
                最近更新 更多