LoginSignup
4
1

More than 1 year has passed since last update.

dotenvが効かないundefined/.env見つからない

Last updated at Posted at 2021-05-24

結論

パスが間違っている可能性が高い。

前提

Nodejsを活用し、環境変数を取得する際には、
dotenvを使用すると良い。

// app.js
require('dotenv').config();
const env = process.env;
console.log(env.USERNAME);
// .env
USERNAME=hogehoge

しかし、上記のように実施したとして、しか表示されない場合、
何がおかしいのか悩む。

> node ./src/app.js
undefined

デバッグ

require('dotenv').config();
console.log(require('dotenv').config());
console.log(process.env.USERNAME);

requireしているところをconsole.log()でくくるとエラーが出る。

error: Error: ENOENT: no such file or directory, open '/Users/~ディレクトリ階層~/プロジェクト名/.env'

プロジェクトのトップに.envファイルがありませんということ。

修正前(./src/.env)

❯ tree -L 2 -a
.
├── LICENSE
├── README.md
├── package.json
├── src
│   ├── .env
│   ├── app.js
│   └── memo
└── yarn.lock

修正後(./.env)

❯ tree -L 2 -a
.
├── LICENSE
├── README.md
├── package.json
├── .env
├── src
│   ├── .env
│   ├── app.js
│   └── memo
└── yarn.lock

言い訳

vscode上で作業をしているとき、
ファイルをコマンドでなく、GUIでババっと作った。
そうした際に、.envはルートディレクトリに作るという無意識が働いてしまっていた。
なので、ルートディレクトリにある前提でいろいろな確認作業をしてしまい、
わからなくなった。

今回のことで、デバッグ手法が一つわかったのでとても勉強になった。

参考

How do I setup the dotenv file in Node.js?

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1