运行React Boilerplate报TypeError: Cannot read properties of undefined (reading 'tap')
修复React样板项目npm start时的HtmlWebpackPlugin错误
我尝试使用npm start运行React样板项目,每次都会出现以下错误:
/mnt/c/Users/User/Downloads/LI-AI-PAD/LI-AI-PAD/node_modules/html-webpack-plugin/index.js:43 compiler.hooks.initialize.tap('HtmlWebpackPlugin', () => { ^ TypeError: Cannot read properties of undefined (reading 'tap') at HtmlWebpackPlugin.apply (/mnt/c/Users/User/Downloads/LI-AI-PAD/LI-AI-PAD/node_modules/html-webpack-plugin/index.js:43:31) at webpack (/mnt/c/Users/User/Downloads/LI-AI-PAD/LI-AI-PAD/node_modules/webpack/lib/webpack.js:51:13) at addDevMiddlewares (/mnt/c/Users/User/Downloads/LI-AI-PAD/LI-AI-PAD/server/middlewares/addDevMiddlewares.js:16:20) at module.exports (/mnt/c/Users/User/Downloads/LI-AI-PAD/LI-AI-PAD/server/middlewares/frontendMiddleware.js:15:5) at Object.<anonymous> (/mnt/c/Users/User/Downloads/LI-AI-PAD/LI-AI-PAD/server/index.js:21:1) at Module._compile (node:internal/modules/cjs/loader:1120:14) at Module._extensions..js (node:internal/modules/cjs/loader:1174:10) at Module.load (node:internal/modules/cjs/loader:998:32) at Module._load (node:internal/modules/cjs/loader:839:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) Node.js v18.7.0
我试过的操作:
- 在报错文件中添加
@params注解,问题未解决 - 尝试安装不同版本的webpack,提示存在冲突的peer依赖
- 必须使用该样板项目,无法更换,求修复方案
问题根源
错误核心是HtmlWebpackPlugin版本与你当前使用的webpack@4.46.0不兼容:webpack 4中不存在compiler.hooks.initialize钩子,这个钩子是webpack 5新增的。说明你安装的html-webpack-plugin版本过高,适配的是webpack 5,但项目依赖的是webpack 4。
修复步骤
- 卸载当前高版本html-webpack-plugin
npm uninstall html-webpack-plugin
- 安装适配webpack 4的指定版本
webpack 4对应的html-webpack-plugin稳定兼容版本为^4.5.2(最后一个支持webpack 4的版本),执行:
npm install html-webpack-plugin@4.5.2 --save-dev
- 清理依赖缓存(可选但推荐)
如果仍存在依赖冲突,先删除旧依赖文件:
rm -rf node_modules package-lock.json
然后重新安装所有依赖:
npm install
- 验证修复
重新执行npm start,项目应该可以正常启动。
注意:不要手动修改node_modules内的代码,每次执行npm install都会覆盖这些修改,且无法解决版本不兼容的核心问题。
内容的提问来源于stack exchange,提问作者tices
相关产品推荐
相关产品推荐

