【问题标题】:NodeJs and Dotenv - Running nodemon does not find .env file in src folderNodeJs 和 Dotenv - 运行 nodemon 在 src 文件夹中找不到 .env 文件
【发布时间】:2017-10-05 05:39:56
【问题描述】:

我有一个使用 dotenv 的非常标准的 Nodejs 设置,我的 server.js 文件位于 src 文件夹中,旁边有一个 .env 文件,以及一个 bin/www.js 文件。自从我开始使用 dotenv 之后,运行以下所有命令就不再起作用了...

nodemon (from the root of my repo)
npm start
nodemon src/server
nodemon src
etc

全部失败,我的环境变量都没有正确加载。我必须转到实际的 src 文件夹并在该确切位置运行“nodemon server.js”。这给我过去使用的一些构建环境和我之前的一些云设置(如 heroku)带来了问题。我认为将 .env 文件与我的 server.js 文件放在同一文件夹中总是可以工作的,但事实并非如此。

谁能告诉我为什么 dotenv 找不到 .env 文件并根据我从哪里启动 nodemon 加载环境变量,即使 nodemon 找到 server.js 文件就好了?

我基本上希望能够从我的存储库的根文件夹启动 nodemon,并且仍然可以使用 dotenv。另外,我尝试将 .env 文件夹移动到根目录,但仍然有问题。

【问题讨论】:

    标签: node.js nodemon


    【解决方案1】:

    我遇到了同样的问题,我找到了解决方法,但它根本不干净。

    我注意到了

    node --require dotenv/config --require babel-register ./bin/www
    

    node ./bin/www --require dotenv/config --require babel-register
    

    的行为方式不同,可能是因为 --require 用于节点而不是用于

    ./bin/www
    

    所以我最终使用了

    nodemon({
      script: '--require',
      cwd: './dist',
      tasks: [
        'dist',
      ],
      args: [
        'dotenv/config',
        '--require',
        'babel-register',
        './bin/www', // YEAH it's weird but 
      ],
      watch: [
        './src',
      ],
    });
    

    是的,我知道,它很难看,但它确实有效,如果你有更好的方法,请告诉我 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2021-11-08
      • 2014-06-10
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2015-08-19
      相关资源
      最近更新 更多