web-dev-qa-db-fra.com

Pourquoi mon process.env personnalisé ne fonctionne-t-il pas avec dotenv?

Apprenant que c'est une mauvaise pratique d'inclure des clés secrètes d'API, j'ai fait des recherches et j'ai essayé d'apprendre à créer des process.env Personnalisés.

Après avoir lu:

J'essaie de définir un fichier env localement sur la base de process.env.NODE_ENV. L'application serait hébergée sur Heroku et dans mon .gitignore j'ai dev.env Mais quand j'essaye d'utiliser dotenv localement j'obtiens un undefined. J'ai défini l'environnement localement avec export NODE_ENV=development Dans mon terminal. Lorsque j'exécute la commande npm start Ou nodemon les deux renvoient undefined mais dans env.js I obtenez Testing for: development, exemple:

nodemon

[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
Testing for: development
undefined

Voici ce que j'ai:

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

mais dans app.js lorsque je teste avec return console.log(process.env.PORT) ou return console.log(keys.PORT) ils se connectent tous les deux undefined, Pourquoi? Je semble faire quelque chose de mal dans env.js lors de l'utilisation de dotenv.

Pour clarifier, je ne pousse même pas encore vers Heroku et prod.env sera la validation. S'il y a une meilleure approche, informez-moi.

4

Bonjour, utilisez d'abord switch(env.trim()), puis modifiez la valeur du chemin path: './config/dev.env'. Bonne chance.

0
Stanislav Baturin

Heroku ne fonctionne pas sur dotenv.

Il a quelque chose appelé "Config Vars" dans la page Paramètres de l'application Heroku donnée:

Par exemple

Heroku Config Vars

Pour votre exemple, si le code souhaite accéder à: process.env.NODE_ENV, vous définiriez un nouveau paramètre de configuration dans votre page de paramètres Heroku de l'application donnée, et l'appelleriez NODE_ENV. Définissez la valeur souhaitée et appuyez sur Enregistrer. Voila. Terminé.

La valeur ajoutée de dotenv est généralement pour les tests sur votre machine locale.

0
Elisha Kramer