从Angular 5.2升级至6.1时执行ng serve/ng build报错求助
解决Angular 5.2升级到6.1时
mini-css-extract-plugin的createHash解构错误 我之前在升级Angular项目时也碰到过完全一样的问题,这大概率是依赖版本不兼容导致的,给你几个亲测有效的解决方案:
1. 降级mini-css-extract-plugin到兼容版本
Angular 6对应的Webpack版本是4.x,而较新版本的mini-css-extract-plugin已经不再适配Webpack 4,所以会出现找不到createHash的错误。你可以把插件降级到0.4.x或0.5.x版本:
- 先卸载当前版本:
npm uninstall mini-css-extract-plugin - 安装兼容版本:
npm install mini-css-extract-plugin@^0.4.0 --save-dev
2. 清理依赖缓存并重新安装
有时候本地依赖缓存会导致版本冲突,执行以下步骤重置依赖:
- 删除
node_modules文件夹(Windows系统用rd /s /q node_modules):rm -rf node_modules - 删除
package-lock.json文件:rm package-lock.json - 重新安装所有依赖:
npm install
3. 确保Angular CLI版本与Angular 6.1匹配
如果你的Angular CLI版本过高(比如7+),也会和项目中的依赖产生冲突。先检查当前CLI版本:
ng --version
如果版本不是6.x,执行以下步骤降级:
- 全局卸载旧CLI:
npm uninstall -g @angular/cli - 安装Angular 6.1对应的CLI版本:
npm install -g @angular/cli@6.1.0 - 同步更新项目本地的CLI依赖:
npm install @angular/cli@6.1.0 --save-dev
4. 检查Webpack版本是否适配
Angular 6内部依赖Webpack 4.x,如果你手动安装了Webpack,确保版本是4.x而非5.x:
npm list webpack
如果版本不对,调整到4.x的兼容版本即可。
错误原因说明
这个错误的核心是mini-css-extract-plugin尝试从Webpack对象中解构createHash方法,但由于插件版本过高(适配Webpack 5+)或者Webpack版本不匹配,导致无法获取到该属性,最终抛出解构错误。
内容的提问来源于stack exchange,提问作者stian64
相关产品推荐
相关产品推荐

