web-dev-qa-db-ja.com

dotenvファイルは環境変数をロードしていません

root folderファイルに.envファイルがあります

_NODE_ENV=development
NODE_Host=localhost
NODE_PORT=4000
NODE_HTTPS=false
DB_Host=localhost
DB_USERNAME=user
DB_PASSWORD=user
_

_server.js_フォルダー内の_root/app/config/server.js_ファイル。 _server.js_ファイルの最初の行は

require('dotenv').config();

私もフォローしようとしました:

require('dotenv').config({path: '../.env'});

require('dotenv').config({path: '../../.env'});

ただし、コマンドプロンプトから_server.js_ファイルを実行すると、env変数はロードされません

_node root/app/config/server.js_

visual studioを使用してF5を押すと、ロードされます!!

何が間違っているのか、何が欠けているのかはわかりません。どんな提案も大歓迎です。ありがとう。

12
Zammy Page

require('dotenv').config({path:__dirname+'/./../../.env'})を使用してはどうですか?

問題は実行パスのようです。

26
Yonghoon Lee

上記の答えに少しニュアンスを追加する-ネストされたファイルからdotenvを呼び出している場合、そして.envファイルはプロジェクトのルートにあります。ドットを接続する方法は次のとおりです。

require('dotenv').config({path:'relative/path/to/your/.env'})
3
zero_cool

これでNode _v8.14.1_:

_const path = require('path')
require('dotenv').config({ path: path.resolve(__dirname, '../.env') })
_

単にrequire('dotenv').config({path:__dirname+'/./../../.env'})を実行すると、_/some/path/to/env/./../../.env_として解決される場所になりました

3
DavidP

もう1つの優れた代替手段を次に示します。

require('dotenv').config({ path: require('find-config')('.env') })

これにより、使用する.envファイルが見つかるまで親ディレクトリが再帰されます。

あるいは、このモジュール ckey を使用することもできます。

メインディレクトリの.envファイル。

# dotenv sample content
[email protected]
PASSWORD=iampassword123
API_KEY=1234567890

サブディレクトリのjsファイル

const ck = require('ckey');

const userName = ck.USER;     // [email protected]
const password = ck.PASSWORD; // iampassword123
const apiKey   = ck.API_KEY;  // 1234567890
1
Sasha Sachi