extract-text-webpack-plugin:TypeError: Cannot set property ‘index‘ of undefined 解决办法

一. 问题背景

cnpm install extract-text-webpack-plugin@next

在用如上命令安装extract-text-webpack-plugin插件时,会有日志如下:
在这里插入图片描述
可以看到提示说extract-text-webpack-plugin需要webpack3到4的版本,但是我webpack装的是5.27版本,因此可能会有问题。

果然在用npm run dev时,报错:

E:\WorkSpace\H5\vue\learn\webpack_demo\node_modules_extract-text-webpack-plugin@4.0.0-beta.0@extract-text-webpack-plugin\dist\index.js:211
extractedChunk.index = i;
^

TypeError: Cannot set property ‘index’ of undefined
at E:\WorkSpace\H5\vue\learn\webpack_demo\node_modules_extract-text-webpack-plugin@4.0.0-beta.0@extract-text-webpack-plugin\dist\index.js:211:32

二. 解决办法

1.原因分析

上网搜了搜,感觉对于webpack5以上的版本,用extract-text-webpack-plugin已经不行了,只能用mini-css-extract-plugin代替,

2修改方法:

执行npm

cnpm install mini-css-extract-plugin --save-dev

执行完毕后,package.json中新增如下:

 "devDependencies": {
    "css-loader": "^5.1.3",
    "extract-text-webpack-plugin": "^3.0.2",
    "mini-css-extract-plugin": "^1.3.9",
    "style-loader": "^2.0.0",
    "webpack": "^5.27.0",
    "webpack-cli": "^3.3.12",
    "webpack-dev-server": "^3.11.2"
  }

修改webpack.config.js:

var path = require('path');

//用插件
// var ExtractTextPlugin = require('extract-text-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

var config = {
    entry: {
        main: './main'
    },
    output: {
    	publicPath: '/dist/',
        path: path.join(__dirname, './dist'),
        filename: 'main.js'
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                // use: [
                //     'style-loader',
                //     'css-loader'
                // ]
                // use: ExtractTextPlugin.extract({
                //     use: 'css-loader',
                //     fallback: 'style-loader'
                // })

                use:[MiniCssExtractPlugin.loader, 'css-loader']
            }
        ]
    }
    ,plugins: [
        // 重命名提取后的css文件
        // new ExtractTextPlugin("main.css")
        new MiniCssExtractPlugin({
            filename: '[name].css',
            chunkFilename: "[id].css"
        })
    ]
};

module.exports = config;

最后,main.js中,需要直接加入css文件的引入

import './style.css';

则可以成功启动服务,并且使用标签引入的css文件

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭Albert

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值