Estoy usando Webpack para el desarrollo.

Cuando ejecuto el proyecto usando el archivo .env, funciona como se esperaba.

Pero cuando cambio su nombre de archivo a .env.development, el process.env se convierte en undefined.

¿Cómo puedo arreglarlo?

Package.json

  "scripts": {
    "start": "webpack-dev-server --config ./webpack.config.js"

Webpack.config.js

const webpack = require("webpack");
const path = require("path");

const HtmlWebpackPlugin = require("html-webpack-plugin");
const Dotenv = require("dotenv-webpack");

module.exports = {
  mode: "development",
  entry: path.resolve(__dirname, "./src/index.jsx"),
  devtool: "source-map",
  output: {
    path: path.join(__dirname, "/dist"),
    filename: "bundle.js",
  },
  devServer: {
    port: 3000,
    static: true,
    historyApiFallback: true,
    open: true,
  },
  resolve: {...},
  module: {...},
  plugins: [
    new Dotenv(),
    new HtmlWebpackPlugin({
      template: "public/index.html",
      filename: "index.html",
      favicon: "public/favicon.ico",
    }),
    new webpack.ProvidePlugin({
      Buffer: ["buffer", "Buffer"],
    }),
    new webpack.ProvidePlugin({
      process: "process/browser",
    }),
  ],
};
0
CCCC 24 nov. 2021 a las 11:42
No cambió nada de la configuración para reflejar el cambio en el nombre del archivo. dotenv busca .env, de ahí el nombre; si desea que busque algo más, debe decirle eso .
 – 
jonrsharpe
24 nov. 2021 a las 11:47
Entonces, ¿cómo decirle eso?
 – 
CCCC
24 nov. 2021 a las 11:48
Bueno, dado que estás usando dotenv-webpack, ¿leíste npmjs.com/package/ dotenv-webpack para averiguar qué configuración expone?
 – 
jonrsharpe
24 nov. 2021 a las 11:49

1 respuesta

La mejor respuesta

dotenv de forma predeterminada solo busca un archivo .env. Esto es deliberado, ya que un archivo env debe ser solo local y específico para el entorno en el que se ejecuta la aplicación. No debe tener diferentes versiones del env para diferentes entornos.

Citaré de los documentos de dotenv:

¿Debo tener varios archivos .env?

No. Recomendamos encarecidamente no tener un archivo .env "principal" y un "entorno" .env archivo como .env.test. Tu configuración debería variar entre implementaciones, y no debe compartir valores entre Ambientes.

En una aplicación de doce factores, las variables de entorno son controles granulares, cada uno completamente ortogonal a otras variables de entorno. Nunca se agrupan como "Entornos", sino que se gestionan de forma independiente para cada implementación. Este es un modelo que se escala sin problemas a medida que la aplicación se expande de forma natural en más implementaciones durante su vida útil.

- La aplicación de doce factores

Sin embargo, puede decirle a dotenv-webpack dónde buscar su archivo si elige:

  plugins: [
    new Dotenv({
        path: './.env.development',
    }),

0
coagmano 24 nov. 2021 a las 11:50