API秘密鍵を含めることは悪い習慣であることを知り、いくつかの調査を行い、カスタムprocess.env
の作成方法を学習しようとしました。
読んだあと:
process.env.NODE_ENV
に基づいてローカルにenvファイルを設定しようとしています。アプリケーションはHerokuでホストされ、私の.gitignoreにはdev.env
がありますが、ローカルで dotenv
を使用しようとすると、undefined
を取得します。端末でexport NODE_ENV=development
を使用してローカルに環境を設定しました。コマンドnpm start
またはnodemon
を実行すると、どちらもundefined
が返されますが、env.jsでTesting for: development
を取得します。例:
nodemon
[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
Testing for: development
undefined
ここに私が持っているものがあります:
app.js:
const keys = require('./config/env')
return console.log(process.env.PORT)
config/env.js:
const env = process.env.NODE_ENV
console.log(`Testing for: ${env}`)
try {
switch(env) {
case 'undefined':
Error('Environment undefined, if local in terminal: export NODE_ENV=development')
break
case 'development':
require('dotenv').config({
path: './dev.env'
})
break
case 'production':
require('dotenv').config({
path: './prod.env'
})
break
default:
Error('Unrecognized Environment')
}
} catch (err) {
Error('Error trying to run file')
}
config/dev.env:
## Port number to run Application
PORT=4321
しかし、app.jsでは、return console.log(process.env.PORT)
またはreturn console.log(keys.PORT)
でテストすると、どちらもundefined
をログに記録しますが、なぜですか? dotenv
を使用しているとき、env.jsで問題が発生しているようです。
明確にするために、私はまだHerokuにプッシュしておらず、prod.envが検証されます。より良いアプローチがある場合は教えてください。
こんにちは最初にswitch(env.trim())
を使用し、次にパス値path: './config/dev.env'
を変更します。幸運を。