Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

645
Vistas
advertencia de paquete web: ADVERTENCIA en DefinePlugin Valores en conflicto para 'process.env.NODE_ENV'

Recibo la advertencia en el título cuando intento ejecutar el modo de desarrollo. Este script solía funcionar bien para un sitio web anterior, pero ahora siempre recibo esta advertencia.

Este es mi paquete.json:

 { "name": "frontend", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "webpack --mode development --watch", "build": "webpack --mode production" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@babel/core": "^7.13.10", "@babel/preset-env": "^7.13.12", "@babel/preset-react": "^7.12.13", "babel-loader": "^8.2.2", "react": "^17.0.2", "react-dom": "^17.0.2", "webpack": "^5.27.2", "webpack-cli": "^4.5.0" }, "dependencies": { "@babel/plugin-proposal-class-properties": "^7.13.0", "@material-ui/core": "^4.11.3", "@material-ui/icons": "^4.11.2", "react-router-dom": "^5.2.0" } }

Y mi webpack.config.js:

 const path = require("path"); const webpack = require("webpack"); module.exports = { entry: "./src/index.js", output: { path: path.resolve(__dirname, "./static/frontend"), filename: "[name].js", }, module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: "babel-loader", }, }, ], }, optimization: { minimize: true, }, plugins: [ new webpack.DefinePlugin({ "process.env": { // This has effect on the react lib size NODE_ENV: JSON.stringify("production"), }, }), ], };

He buscado por todas partes pero no pude encontrar nada similar a esta advertencia.

over 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

0

The value in NODE_ENV: JSON.stringify("this_value_here") should match the value inside package.json "scripts": { "dev": "webpack --mode development --watch", "build": "webpack --mode production" },

Si está ejecutando "npm run dev" , mantenga JSON.stringify("development") , si está ejecutando "npm run build" , cámbielo a JSON.stringify("production") . Básicamente, haz que coincida con el tipo de modo que estás ejecutando.

over 4 years ago · Santiago Trujillo Denunciar

0

Este error significa que intentó reasignar process.env.NODE_ENV en la llamada DefinePlugin con el valor diferente al que tenía antes.

Puede configurarlo implícitamente agregando la opción de mode a la configuración, o agregando la clave nodeEnv a la optimization . O simplemente configure la variable de entorno antes de ejecutar webpack.

Y parece que ese es tu caso. Configuró NODE_ENV=development en algún lugar, ejecutó el paquete web y luego está tratando de reasignarlo a production .

Compruebe cómo ejecuta el paquete web y el valor del entorno NODE_ENV.

over 4 years ago · Santiago Trujillo Denunciar

0

Está diciendo que "intenta ejecutar el modo de desarrollo". De acuerdo con su package.json , eso significa ejecutar:

webpack --mode development --watch (NOTA: sintaxis v4)

  1. El parámetro de mode es el modo que se utilizará cuando se ejecuta el paquete web, es decir, durante el " tiempo de compilación " (o "tiempo de compilación").
  2. DefinePlugin verifica esa variable cuando intenta definirla para su " tiempo de ejecución " (que es diferente del " tiempo de compilación ") y, por lo tanto, le advierte si los dos son diferentes ( código aquí ).

Solución

Asegúrese de que el mode en su objeto webpack.config (o en el comando CLI, que lo reemplaza en el objeto de configuración) sea el mismo que pasa a DefinePlugin .

¿Cómo acceder a los parámetros CLI del paquete web en webpack.config.js ?

Si desea poder proporcionar el parámetro de mode desde la CLI o un script de package.json , y aún así el DefinePlugin no emite una advertencia (lo que significa que obtiene ese valor de la CLI y lo conecta al DefinePlugin ), haga esto:

Cambia el contenido de tu webpack.config.js desde tu module.exports = { mode: ..., rules: ... }; (o export default { ... } object de configuración predeterminado { ... } ) a una function como se muestra a continuación. Esta función funciona exactamente igual (usted return el objeto de configuración final), pero permite leer las variables de entorno del primer parámetro env , así como las opciones de la CLI del paquete web del segundo argumento argv :

 module.exports = (env, argv) => { // `mode` is `'XX'` if you ran webpack like so: `webpack watch --mode XX` (v5 syntax) const mode = argv.mode || 'development'; // dev mode by default // ... return { mode, // this is optional, since webpack already knows the `mode` from the CLI parameter // ... plugins: [ // ... new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(mode) }) ] // ... }; };

PD : Estás usando Webpack@4. Si usaste Webpack@5, tendrías que cambiar

webpack --mode development --watch

para

webpack watch --mode development .

PPS : Siempre prefiera 'process.env.NODE_ENV': JSON.stringify('X') sobre 'process.env': JSON.stringify({ NODE_ENV: 'X' }) , ya que el primero reemplaza de manera segura todas las ocurrencias del process.env.NODE_ENV en su código con "X" , mientras que este último reemplaza cualquier ocurrencia de process.env con { "NODE_ENV": "X" } . Eso, a su vez, es probable que arruine otras variables de entorno. Ejemplo: process.env.Y se convertirá en ({ "NODE_ENV": "X" }).Y que no está undefined .

over 4 years ago · Santiago Trujillo Denunciar

0

intenta cambiar

 new webpack.DefinePlugin({ "process.env": { // This has effect on the react lib size NODE_ENV: JSON.stringify("production"), }, }),

para

 plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV' : JSON.stringify('production') }) ]
over 4 years ago · Santiago Trujillo Denunciar

0

¡Gracias por ayudar a todos, muy apreciado!

Terminé reemplazando "producción" con "desarrollo" en el siguiente fragmento de webpack.config:

 plugins: [ new webpack.DefinePlugin({ "process.env": { // This has effect on the react lib size NODE_ENV: JSON.stringify("development"), }, }), ]

Se deshizo de la advertencia, pero me pregunto qué impacto tiene esto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda