j'essaie d'utiliser le module de noeud dotenv et il ne fonctionne pas pour moi. J'ai un fichier à config/config.js avec le contenu suivant:
'use strict';
var dotenv = require('dotenv');
dotenv.load();
console.log('config');
J'ai également un fichier appelé .env à la racine de mon dossier d'application. J'ai aussi des variables d'environnement comme TWILIO_ACCOUNT_SID. Voici le processus par lequel je passe en essayant d’utiliser les variables d’environnement dans une fonction donnée:
Omes-MacBook-Pro:sidetime ome$ node
> require('./config/config.js');
config
{}
> process.env.TWILIO_ACCOUNT_SID
undefined
J'ai défini TWILIO_ACCOUNT_SID dans mon fichier .env, mais dès que j'essaie de sortir la valeur sur ma console, j'obtiens l'erreur de l'indiquer. Si vous avez des suggestions sur la façon de résoudre ce problème, je les apprécierai beaucoup.
Dans mon cas, chaque fois que j'essaie d'obtenir un fichier sous forme de fichier .env à l'aide de process.env.MY_KEY
, il retourne undefined
J'ai souffert de ce problème pendant deux heures simplement parce que j'ai nommé le fichier à l'aide de keys.env
. Ce fichier n'est pas considéré comme un fichier .env
.
alors voici troubleshooting list
assurez-vous que le nom du fichier est ".env" (je pense que ".env.test" est acceptable)
assurez-vous que vous en avez besoin As early as possible
dans votre application à l'aide de cette instruction require('dotenv').config();
assurez-vous que le fichier .env
est in the root directory of your project
.
file writing rules
comme DB_Host=localhost
, car vous n'avez pas besoin de les envelopper d'une citation double ou simpleconsultez également la documentation du paquet sur le site npm ici https://www.npmjs.com/package/dotenv
espérons que cela vous fera gagner du temps
Je résous en utilisant
require('dotenv').config({path: __dirname + '/.env'})
ou utilisez le chemin absolu:
C:\\asd\\auhsd\\.env
S'il ne trouve pas .env file il quitte undefined
je n'ai pas mis les variables d'environnement au bon format, comme dans la documentation du module dotenv, par exemple. Je faisais l'exportation TWILIO_CALLER_ID = "+ wwehehe" et le module dotenv n'analysait donc pas correctement mon fichier. Quand j’ai remarqué que j’avais retiré le mot-clé d’exportation des déclarations et que tout fonctionnait bien.
A eu le même problème récemment. Vérifiez votre fichier .env et procédez comme suit:
key=value
au lieu de
key:value
J'ai eu le même problème et j'ai essayé 4 heures pour trouver la faute. Dans mon cas, c'était bizarre.
Quand j'ai essayé "node app.js", cela a fonctionné. Quand je voulais un démon pour le démarrer, cela ne fonctionnait pas.
Comment ai-je résolu mon problème? J'ai remplacé:
var dotenv = require('dotenv');
dotenv.load();
avec:
var dotenv = require('dotenv').config({path: path.join(__dirname, '.env')})
Assurez-vous de définir cwd dans la configuration de pm2 sur le bon répertoire pour tous les appels à dotenv.config ().
Exemple: Votre fichier index.js se trouve dans/app/src, votre fichier .env se trouve dans/app. Votre fichier index.js a ceci
dotenv.config ({path: "../.env"});
Votre configuration pm2 json devrait avoir ceci: "Cwd": "/ app/src", "script": "index.js"
Vous pouvez également utiliser dotenv.config ({path: path.join (__ dirname, "../.env")}); pour éviter le problème CWD. Vous aurez toujours un problème si vous déplacez le fichier .env ou index.js l'un par rapport à l'autre.
Veillez également à exécuter votre script de nœud à partir du dossierROOT.
Par exemple. J'utilisais un script de test dans un sous-dossier appelé ./bin/test.js
. L'appeler comme suit: node ./bin/test.js
fonctionnait parfaitement. L'appeler depuis le sous-dossier comme:
$ pwd
./bin
$ node ./test.js
cause dotenv
pour ne pas trouver mon fichier ./.env
.
Mon problème était stupide. J'ai créé le fichier .env dans un éditeur de texte et, lorsque je l'ai enregistré, il a été enregistré sous le nom
'.env.txt'
qui n'était visible qu'après avoir fait une
'ls -a'
dans le terminal et vu le nom du fichier.
Un rapide:
mv .env.txt .env
Et j'étais en affaires
J'ai eu le même problème. J'ai réalisé que mon fichier était en quelque sorte encodé en UCS-2 BE BOM
. La conversion de mon fichier .env
en UTF-8
l'a corrigé (vous pouvez facilement le faire en utilisant Notepad ++, par exemple).
Assurez-vous que les variables ne sont pas déjà définies. Dotenv ne les remplacera pas.
Si des variables sont définies, vous devrez les supprimer. Dans PowerShell, vous pouvez utiliser la commande suivante - comme mentionné ici :
Remove-Item Env:\MyTestVariable
J'ai également eu un problème avec les variables .env qui ne se chargeaient pas et qui étaient undefined
.
Ce que j'ai essayé:
index.js:
import dotenv from 'dotenv';
dotenv.config();
import models from './models';
models.js
import Sequelize from 'sequelize';
const sequelize = new Sequelize(
process.env.DATABASE,
process.env.DATABASE_USER,
process.env.DATABASE_PASSWORD,
{
dialect: 'postgres',
}
);
Apparemment, en raison de la façon dont le chargement des importations fonctionne dans nodejs, l'importation de modèles dans index.js
a provoqué l'exécution du fichier models.js avant le dotenv.config()
. Par conséquent, j'ai eu des valeurs indéfinies de process.env.
Quand j'ai changé de modèle.js pour faire la configuration de dotenv comme:
import Sequelize from 'sequelize';
import dotenv from 'dotenv';
dotenv.config();
const sequelize = new Sequelize(
process.env.DATABASE,
process.env.DATABASE_USER,
process.env.DATABASE_PASSWORD,
{
dialect: 'postgres',
}
);
ça a commencé à marcher!
Le fichier '.env' doit se trouver dans le répertoire racine de votre fichier de serveur de nœud js (server.js ou pour moi).
Si vous avez placé le fichier '.env' à la racine de votre projet, cela ne fonctionnera pas. Mon erreur est que le fichier server.js a imbriqué un dossier nommé 'contrôleur'.
J'ai donc dû résoudre le problème en plaçant le fichier .env dans le même répertoire que le fichier server.js.
Avait le même problème. J'ai utilisé dotenv-webpack
et j'ai besoin de définir
plugins: [
new Dotenv()
]
in both webpack production et fichiers de base Webpack (j'utilise Webpack merge) . Si n'a pas été défini dans les deux fichiers, cela n'a pas fonctionné.