NodeJs和Dotenv - 运行nodemon在src文件夹中找不到.env文件

时间:2017-05-07 01:30:57

标签: node.js nodemon

我使用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文件夹移动到根目录中,但仍然存在问题。

1 个答案:

答案 0 :(得分: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',
  ],
});

是的,我知道,这很丑陋,但它有效,如果你有更好的方法做到这一点,请告诉我:)