全新Rails 6.1.4.1运行webpack报错:Class constructor ServeCommand cannot be invoked without 'new'
错误产生原因
该错误由webpack-cli与webpack-dev-server版本不兼容导致。Rails 6.1.4.1默认绑定的webpacker依赖自带的是3.x版本的webpack-cli,而如果项目安装的是4.x及以上版本的webpack-dev-server,要求webpack-cli必须为4.x以上版本。低版本webpack-cli调用ServeCommand的方式不符合高版本webpack-dev-server的语法要求,就会抛出构造函数无法直接调用的错误。
排查修复步骤
- 首先确认当前依赖版本:执行
npm list webpack-cli webpack-dev-server,或者直接查看项目根目录下package.json文件中两个依赖的版本号,确认是否存在跨大版本不匹配的情况 - 方案1(适配Rails 6.1默认配置,推荐):将
webpack-dev-server降级到兼容3.x版本webpack-cli的最后稳定版
执行命令:yarn add webpack-dev-server@3.11.3 --dev
如果使用npm作为包管理器,执行:npm install webpack-dev-server@3.11.3 --save-dev - 方案2(需要使用webpack-dev-server 4.x新功能时选用):将
webpack-cli升级到匹配的4.x版本
执行命令:yarn add webpack-cli@4.10.0 --dev
升级后如果出现其他webpacker相关依赖冲突,建议回退到方案1 - 修复完成后,重新执行
bin/webpack-dev-server验证服务是否正常启动
内容的提问来源于stack exchange,提问作者Scott K
相关产品推荐
相关产品推荐

