问题
I have .env file at root folder file
NODE_ENV=development
NODE_HOST=localhost
NODE_PORT=4000
NODE_HTTPS=false
DB_HOST=localhost
DB_USERNAME=user
DB_PASSWORD=user
And server.js
file in the root/app/config/server.js
folder.
The first line of server.js
file is
require('dotenv').config();
I also tried following:
require('dotenv').config({path: '../.env'})
;
require('dotenv').config({path: '../../.env'})
;
However, my env variable are not loaded when I run the server.js
file
from command prompt
node root/app/config/server.js
If I use the visual studio and press F5, it loads!!
I'm not sure what I'm doing wrong, what I'm missing. Any suggestion is highly appreciate. Thanks.
回答1:
How about use require('dotenv').config({path:__dirname+'/./../../.env'})
?
Your problem seems to be the execution path.
回答2:
This solved my issues in Node v8.14.1
:
const path = require('path')
require('dotenv').config({ path: path.resolve(__dirname, '../.env') })
Simply doing require('dotenv').config({path:__dirname+'/./../../.env'})
resulted in a location that resolved as /some/path/to/env/./../../.env
回答3:
Adding a little nuance to the answer above - if you are invoking dotenv
from a nested file, and your .env
file is at the project root, the way you want to connect the dots is via the following:
require('dotenv').config({path:'relative/path/to/your/.env'})
回答4:
Here is another good alternative:
require('dotenv').config({ path: require('find-config')('.env') })
This will recurse parent directories until it finds a .env file to use.
You can also alternatively use this module called ckey inspired from one-liner above.
.env file from main directory.
# dotenv sample content
USER=sample@gmail.com
PASSWORD=iampassword123
API_KEY=1234567890
some js file from sub-directory
const ck = require('ckey');
const userName = ck.USER; // sample@gmail.com
const password = ck.PASSWORD; // iampassword123
const apiKey = ck.API_KEY; // 1234567890
来源:https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables