PrestaShop经典主题_dev执行npm run watch报错,求解决
解决PrestaShop经典主题开发中
npm run watch的Chunk.entrypoints错误 这个问题我之前帮朋友排查过,根源是webpack版本和extract-text-webpack-plugin插件不兼容——你当前安装的webpack版本(看起来是4+)已经废弃了Chunk.entrypoints这个API,但旧版的extract-text-webpack-plugin还在调用它,所以直接报错了。下面给你两种可行的解决方案:
方案一:回退到兼容的webpack和插件版本(最简单)
因为PrestaShop经典主题的_dev工具原本是基于webpack 3.x开发的,直接安装匹配的版本就能快速解决问题:
- 先卸载当前不兼容的依赖:
npm uninstall webpack extract-text-webpack-plugin --save-dev
- 安装指定的兼容版本:
npm install webpack@3.12.0 extract-text-webpack-plugin@3.0.2 --save-dev
- 再次运行
npm run watch,应该就能正常编译了,那个Tapable.plugin的警告也会消失。
方案二:升级到webpack 4+并替换插件(更现代)
如果你想使用新版本的webpack,可以用mini-css-extract-plugin替代已经被废弃的extract-text-webpack-plugin:
- 卸载旧依赖:
npm uninstall webpack extract-text-webpack-plugin --save-dev
- 安装新版webpack和替代插件:
npm install webpack@4.46.0 mini-css-extract-plugin css-loader postcss-loader sass-loader --save-dev
- 修改
_dev/webpack.config.js配置文件:- 替换插件引用:
// 删掉这行 const ExtractTextPlugin = require('extract-text-webpack-plugin'); // 添加这行 const MiniCssExtractPlugin = require('mini-css-extract-plugin'); - 修改插件实例:
plugins: [ // 删掉旧的插件配置 // new ExtractTextPlugin('../css/theme.css'), // 添加新的插件配置 new MiniCssExtractPlugin({ filename: '../css/theme.css' }) ] - 修改CSS规则的loader配置:
module: { rules: [ { test: /\.(scss)$/, // 替换原来的ExtractTextPlugin.extract部分 use: [ MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader' ] } ] }
- 替换插件引用:
- 运行
npm run watch即可正常使用新版webpack编译主题资源。
额外提示
如果你是直接从PrestaShop GitHub仓库拉取的经典主题,建议优先查看_dev/package.json里的devDependencies配置,按照官方指定的版本安装依赖,这样能避免大部分版本兼容问题。
内容的提问来源于stack exchange,提问作者Alessandra Vaccari
相关产品推荐
相关产品推荐

