NodeJs和Dotenv - 运行nodemon在src文件夹中找不到.env文件
问题描述:
我有一个非常标准的Nodejs安装程序,使用dotenv,我的server.js文件位于src文件夹中,.env文件位于它旁边,以及bin/www.js文件。自从我开始使用dotenv,跑遍以下不再工作...NodeJs和Dotenv - 运行nodemon在src文件夹中找不到.env文件
nodemon (from the root of my repo)
npm start
nodemon src/server
nodemon src
etc
全部失败,没有我的环境变量得到正确加载。我必须去实际的src文件夹并在该确切位置运行“nodemon server.js”。这对我以前使用的一些构建环境以及我以前的一些云设置(如heroku)造成了问题。我以为在我的server.js文件相同的文件夹中有.env文件将始终工作,但它不。
谁能告诉我为什么dotenv无法找到.env文件并根据我从哪里启动nodemon加载环境变量,即使nodemon发现server.js文件就好?
我基本上想能够从我的存储库的根文件夹启动nodemon并仍然有dotenv的工作。另外,我尝试将.env文件夹移动到根目录,并且仍然存在问题。
答
我有同样的问题,我找到了解决方法,但它根本不干净。
我注意到,
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',
],
});
是啊我知道,它很丑,但它的工作原理,如果你有更好的方法来做到这一点,请让我知道:)