我使用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文件夹移动到根目录中,但仍然存在问题。
答案 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',
],
});
是的,我知道,这很丑陋,但它有效,如果你有更好的方法做到这一点,请告诉我:)