なぜかnode.jsでenvファイルを読み込めません。
ちゃんと
npm install dotenv
をしたうえで、
node.js
1require('dotenv').config();
とコーディングしているにも関わらず、です。.envファイルもはルートディレクトリに置いています。
nodemailerでGmailにOAuth2.0認証する際に、clientIdやclientSecretなどを.envファイルに格納してからprocess.env.でコーディングしているのですが、これだと認証されません。直にclientIdやclientSecretを記載すると認証されます。
何か根本的な原因があるのでしょうか? よろしくお願いいたします。
うーん、この質問文だと本当にdotenvのライブラリが動いていないのかわからないですね。
これを実行した結果と.envファイルの中身を質問文に追記してください。
console.log(process.env)
この時clientSecret等をそのまま記述すると情報漏えいになるので、
先頭と末尾以外の文字を■でマスキングする等の加工を施してください。
また関係あるかわかりませんが、
例えばWindowsの場合はドット始まりのファイルをエクスプローラから作ると
勝手に`.txt`という拡張子を補ってしまうんですよね。
OS名も記述しておいてくれると助かります。
ご返答ありがとうございます。
envファイルの中身は以下のようになっています。
EMAILADDRESS='h●●●●●●●m'
EMAILPASSWORD='y●●●●●●●●●●●●●●s'
EMAILADDRESS2='j●●●●●●●●●●●●●●●●m'
CLIENTID='9●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●m'
CLIENT_SECRET='S●●●●●●●●●●●●k'
REFRESH_TOKEN='8●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●L'
例えばclientIdだけをprocess.env.CLIENTIDで実行すると、
Error: invalid_request: Could not determine client ID from request.
とターミナルに表記されます。
シングルクォーテーションを付けたり外したりをしてみたのですが、結果は同じでした。
また、Windowsを使っていますが、ファイル名は.envではなく●●.envにしています。
> ファイル名は.envではなく●●.envにしています
Linux文化圏の話になりますが、
ドット始まりのファイルは隠しファイルによる設定ファイルになります。
好き勝手な名前を左に付ける事は許されないので、●●の部分を削って実行してみてください。
ありがとうございます!
ファイル名を削って.envにしたら無事に読み込めました!
厚かましいお願いなのですが、もう一つ質問をアップしていまして、
https://teratail.com/questions/jyj63cyf2jkvxr
お手すきの時間にこちらのほうもチェックして頂けるとありがたいです。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー