node.js - example - node js process env
nodo dotenv no está funcionando (12)
Estoy tratando de usar el módulo dotenv de nodo y no está funcionando para mí. Tengo un archivo en config / config.js con el siguiente contenido:
''use strict'';
var dotenv = require(''dotenv'');
dotenv.load();
console.log(''config'');
También tengo un archivo llamado .env en la raíz de la carpeta de mi aplicación. También tengo variables de entorno como TWILIO_ACCOUNT_SID. Este es el proceso que paso al intentar usar las variables de entorno en una función determinada:
Omes-MacBook-Pro:sidetime ome$ node
> require(''./config/config.js'');
config
{}
> process.env.TWILIO_ACCOUNT_SID
undefined
Definí el TWILIO_ACCOUNT_SID en mi archivo .env, pero tan pronto como intento generar el valor en mi consola, me aparece el error de que no está definido. Si tiene alguna sugerencia sobre cómo solucionar este problema, será muy apreciado por mí.
Asegúrese de configurar cwd en la configuración de pm2 en el directorio correcto para cualquier llamada a dotenv.config ().
Ejemplo: Su archivo index.js está en / app / src, su archivo .env está en / app. Su archivo index.js tiene esto
dotenv.config ({ruta: "../.env"});
Su configuración json de pm2 debe tener esto: "cwd": "/ app / src", "script": "index.js"
También puede usar dotenv.config ({path: path.join (__ dirname, "../.env")}); para evitar el problema de CWD. Aún tendrá un problema si mueve el archivo .env o el archivo index.js en relación entre sí.
Asegúrese de que las variables no estén ya establecidas. Dotenv no los anulará.
Si las variables están configuradas entonces tendrás que eliminarlas. En PowerShell puedes usar el siguiente comando, como se menciona aquí :
Remove-Item Env:/MyTestVariable
El archivo ''.env'' debe estar en el directorio raíz de su archivo de servidor js de nodo (server.js o para mí).
Si colocó el archivo ''.env'' en la raíz de su proyecto, no funcionará. Mi error fue que tengo el archivo server.js anidado en una carpeta llamada ''controlador''.
Así que tuve que arreglarlo colocando el archivo .env en el mismo directorio que el archivo server.js.
En mi caso, cada vez que intento obtener un archivo .env de formulario clave usando process.env.MY_KEY
, devuelve undefined
Sufrí este problema durante dos horas solo porque nombré el archivo algo así como keys.env
, no se considera un archivo .env
así que aquí está la troubleshooting list
asegúrese de que el nombre del archivo sea ".env" (creo que ".env.test" es aceptable)
asegúrese de que lo está solicitando Lo
As early as possible
en su aplicación utilizando esta declaraciónrequire(''dotenv'').config();
asegúrese de que el archivo
.env
estéin the root directory of your project
.- asegúrese de que está siguiendo las
file writing rules
delfile writing rules
comoDB_HOST=localhost
, ya que no es necesario envolverlas con comillas dobles o comillas simples
También puede consultar la documentación del paquete en el sitio npm aquí https://www.npmjs.com/package/dotenv
Espero que esto te ahorre tiempo
Mi problema era estúpido. Creé el .env en un editor de texto, y cuando lo guardé, se guardó como
''.env.txt''
que sólo fue visible después de que hice una
''ls -a''
En la terminal y vio el nombre del archivo.
Un rápido:
mv .env.txt .env
Y yo estaba en el negocio
No puse mis variables de entorno en el formato correcto como estaba en la documentación del módulo dotenv, por ejemplo, estaba haciendo la exportación TWILIO_CALLER_ID = "+ wwehehe", por lo que el módulo dotenv no estaba analizando mi archivo correctamente. Cuando me di cuenta de que eliminé la palabra clave de exportación de las declaraciones y todo funcionó bien.
Resuelvo usando
require(''dotenv'').config({path: __dirname + ''/.env''})
o usar ruta absoluta:
C://asd//auhsd//.env
Si no encuentra el archivo .env lo deja indefinido.
Tenía el mismo problema recientemente. Por favor revise su archivo .env y haga esto:
key=value
en lugar de
key:value
Tenía el mismo problema. Utilicé dotenv-webpack
y necesito definir
plugins: [
new Dotenv()
]
Tanto en la producción de paquetes web como en los archivos base de paquetes web (uso la combinación de paquetes web). Si no se definió en ambos archivos, entonces no funcionó.
Tenga cuidado de que también ejecute su secuencia de comandos Node desde la carpeta ROOT .
Por ejemplo, estaba usando un script de prueba en una subcarpeta llamada ./bin/test.js
. Llamándolo como: node ./bin/test.js
funcionó totalmente bien. Llamándolo desde la subcarpeta como:
$ pwd
./bin
$ node ./test.js
hace que dotenv
no encuentre mi archivo ./.env
.
Tuve el mismo problema e intenté 4 horas para encontrar la falla. En mi caso, era extraño.
Cuando probé "node app.js", funcionó. Cuando quise que un demonio lo iniciara, no funcionó.
¿Cómo resolví mi problema? Yo reemplacé
var dotenv = require(''dotenv'');
dotenv.load();
con:
var dotenv = require(''dotenv'').config({path: path.join(__dirname, ''.env'')})
Yo tuve el mismo problema. Me di cuenta de que mi archivo estaba codificado de alguna manera en UCS-2 BE BOM
. La conversión de mi archivo .env
a UTF-8
solucionó (puede hacerlo fácilmente usando Notepad ++, por ejemplo).