Soy un principiante en nodejs. Creé dos archivos json con diferentes nombres y mail.host. El primero se llama desarrollo.json
{ "name": "My Express App - Development", "mail": { "host": "dev-mail-server" } }y el otro es production.json
{ "name": "My Express App - Production", "mail": { "host": "prod-mail-server" } } después de ejecutar este código a continuación en mi index.js, el terminal imprime el mismo resultado incluso después de usar set NODE_ENV="production" en el terminal. ¿Cuál parece ser el problema en mi código? ¡Muchas gracias!
console.log(`Application Name: ${config.get('name')}`) console.log(`Mail Server: ${config.get('mail.host')}`)Supongo que estás usando el paquete de configuración . Creé una aplicación de ejemplo en Windows 10 para probar todo esto usando la siguiente estructura de archivos. Sospecho que solo necesita omitir las comillas, por ejemplo
SET NODE_ENV=developmentcuando está configurando la variable NODE_ENV.
Aquí están los detalles de la aplicación:
Estructura de carpetas
project | app.js | └──config | development.json | production.jsonaplicación.js
const config = require('config'); console.log(`Application Name: ${config.get('name')}`); console.log(`Mail Server: ${config.get('mail.host')}`);desarrollo.json
{ "name": "My Express App - Development", "mail": { "host": "dev-mail-server" } }producción.json
{ "name": "My Express App - Production", "mail": { "host": "prod-mail-server" } }Prueba de símbolo del sistema
Si abro una ventana de comando e ingreso:
SET NODE_ENV=development node app.jsObtengo la salida:
Application Name: My Express App - Development Mail Server: dev-mail-serverSi escribo:
SET NODE_ENV=production node app.jsObtengo la salida:
Application Name: My Express App - Production Mail Server: prod-mail-serverPrueba de PowerShell
Si abro una ventana de Powershell e ingreso:
$env:NODE_ENV="development" node app.jsObtengo la salida:
Application Name: My Express App - Development Mail Server: dev-mail-serverSi entro:
$env:NODE_ENV="production" node app.jsObtengo la salida:
Application Name: My Express App - Production Mail Server: prod-mail-serverIgualmente