Error de Webpack después de actualizar algunas ganancias

Estoy actualizando los paquetes de mi aplicación, pero estoy recibiendo algunos errores cuando intento actualizar a los últimos.

My Project is running at http://localhost:8080/

estos son los paquetes del viejo proyecto que si uso funciona perfectamente

   "autoprefixer": "^9.6.5",
    "postcss-loader": "^3.0.0",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.9",
    "webpack-dev-server": "^3.11.0"

Estoy tratando de actualizar a estos para ser justo a las últimas versiones:

"autoprefixer": "^10.1.0",
"postcss-loader": "^4.1.0",
"webpack": "^5.9.0",
"webpack-cli": "^4.2.0",
"webpack-dev-server": "^3.11.0"

mi código GitHub: https://github.com/openbooknoobdeveloper/pizzareact

webpack.config.js

const path = require('path');
const autoprefixer = require('autoprefixer');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: ''
  },
  devtool: 'cheap-module-eval-source-map',
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      },
      {
        test: /\.css$/,
        exclude: /node_modules/,
        use: [
          { loader: 'style-loader' },
          {
            loader: 'css-loader',
            options: {
              importLoaders: 1,
              modules: {
                localIdentName: '[name]__[local]__[hash:base64:5]'
              }
            }
          },
          {
            loader: 'postcss-loader',
            options: {
              ident: 'postcss',
              plugins: () => [autoprefixer()]
            }
          }
        ]
      },
      {
        test: /\.(png|jpe?g|gif)$/,
        loader: 'url-loader?limit=8000&name=images/[name].[ext]'
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: __dirname + '/src/index.html',
      filename: 'index.html',
      inject: 'body'
    })
  ]
};

webpack.config.prod.js

const path = require('path');
const autoprefixer = require('autoprefixer');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: ''
  },
  devtool: 'none',
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      },
      {
        test: /\.css$/,
        exclude: /node_modules/,
        use: [
          { loader: 'style-loader' },
          {
            loader: 'css-loader',
            options: {
              importLoaders: 1,
              modules: {
                localIdentName: '[name]__[local]__[hash:base64:5]'
              }
            }
          },
          {
            loader: 'postcss-loader',
            options: {
              ident: 'postcss',
              plugins: () => [autoprefixer()]
            }
          }
        ]
      },
      {
        test: /\.(png|jpe?g|gif)$/,
        loader: 'url-loader?limit=8000&name=images/[name].[ext]'
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: __dirname + '/src/index.html',
      filename: 'index.html',
      inject: 'body'
    })
  ]
};

si actualizo los paquetes obtengo este error cuando corro npm start :

$ npm start

> [email protected] start A:\github\LAB\test-webpack-version-pizza
> webpack-dev-server

'webpack-dev-server' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `webpack-dev-server`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\PC\AppData\Roaming\npm-cache\_logs\2020-12-17T15_41_12_536Z-debug.log

Pregunta hecha hace 3 años, 5 meses, 0 días - Por quantumcoder


3 Respuestas:

  • Su problema es causado por la webpack de migración 4.x a 5.x. Tienes que cambiar el script de inicio para iniciar el servidor webpack: https://webpack.js.org/guides/development/

    "start": "webpack serve"
    

    Cuidado con las npm.

    Respondida el Dec 17, 2020 a las 16:19 - por techscribe

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás viendo indica que webpack-dev-server no está siendo reconocido como un comando válido. Esto puede ser causado por diversas razones, como un problema de instalación o una incompatibilidad con la versión actual de Webpack.

    Para solucionar este problema, te recomiendo que sigas los siguientes pasos:

    • Asegúrate de que `webpack-dev-server` está instalado como una dependencia de desarrollo en tu proyecto. Puedes verificarlo ejecutando el siguiente comando en la terminal en la carpeta de tu proyecto:
    bash
    npm list webpack-dev-server
    

    Si no aparece en la lista, puedes instalarlo ejecutando:

    bash
    npm install webpack-dev-server --save-dev
    
    • Si `webpack-dev-server` ya está instalado pero sigue sin funcionar, es posible que haya alguna incompatibilidad con la versión actual de Webpack. Para solucionar esto, puedes intentar instalar una versión específica de `webpack-dev-server` que sea compatible. Puedes probar con la siguiente versión:
    bash
    npm install [email protected] --save-dev
    

    Después de instalar, intenta ejecutar nuevamente npm start para ver si el error se resuelve.

    • Si el problema persiste, puedes intentar limpiar la caché de NPM y reinstalar todas las dependencias. Puedes hacerlo ejecutando los siguientes comandos:
    bash
    npm cache clean --force
    rm -rf node_modules
    npm install
    

    Una vez que hayas seguido estos pasos, intenta nuevamente ejecutar npm start y verifica si el error se ha solucionado. Espero que esta información te sea de ayuda.

    Respondida el Dec 18, 2020 a las 16:22 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Razón del error:

    El error ocurre porque estás intentando ejecutar webpack-dev-server desde tu terminal, pero webpack-dev-server ya no es un comando independiente en Webpack 5. Ahora es una dependencia de webpack, por lo que debes ejecutarlo usando el comando webpack.

    Solución:

    Para solucionar el error, actualiza tu script de inicio en package.json para que use el comando webpack con el argumento serve:

    json
    "scripts": {
      "start": "webpack serve"
    }
    

    Paquete faltante:

    También falta un paquete en tu configuración de Webpack. El paquete HtmlWebpackPlugin debe instalarse para que el complemento funcione correctamente.

    Configuración actualizada:

    webpack.config.js

    javascript
    const path = require('path');
    const autoprefixer = require('autoprefixer');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
      mode: 'development',
      entry: './src/index.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: ''
      },
      devtool: 'cheap-module-eval-source-map',
      module: {
        rules: [
          // ... (resto del código)
        ]
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: __dirname + '/src/index.html',
          filename: 'index.html',
          inject: 'body'
        })
      ]
    };
    

    webpack.config.prod.js

    javascript
    const path = require('path');
    const autoprefixer = require('autoprefixer');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
      mode: 'production',
      entry: './src/index.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: ''
      },
      devtool: 'none',
      module: {
        rules: [
          // ... (resto del código)
        ]
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: __dirname + '/src/index.html',
          filename: 'index.html',
          inject: 'body'
        })
      ]
    };
    

    Pasos para ejecutar:

    • Instala el paquete `HtmlWebpackPlugin` usando `npm install --save-dev html-webpack-plugin`.
    • Actualiza tu script de inicio en `package.json` para usar `webpack serve`.
    • Ejecuta `npm start` para iniciar el servidor de desarrollo de Webpack.

    Estos cambios deberían resolver el error y permitirte ejecutar correctamente tu aplicación.

    Respondida el Dec 18, 2020 a las 16:25 - por Gemini

    Votos positivos: 0 | Votos negativos: 0