1.前言:
npm install后,npm run dev, 报TypeError: Class constructor ServeCommand cannot be invoked without ‘new‘, 这一看就是webpack-cli相关的版本冲突造成的, 通过baidu,google,stackoverflow查到也是保持webpack-dev-server版本为"~3“之类的, 也解决不了我的问题,试了npm的版本12,14,16都没用, 已经一个星期了,看来只能我自己解决了。
2.解决过程:
通过全局查找到ServeCommand在node_modules/@webpack-cli/serve文件夹下,类ServeCommand仅用一个apply的方法, 报错的地方是node_modules/webpack-cli/lib/utils/prompt-installation.js的 return func(...args),这里肯定是不对的。 所以,这里的版本肯定是冲突的, 所以去npm里查找了一下 @webpack-cli/serve的各个版本和源码,最终确定以下版本是可用的:
"@webpack-cli/serve": "~1.0.1",
"webpack": "~4.30.0",
"webpack-cli": "~4.1.0",
"webpack-dev-middleware": "~3.6.2",
"webpack-dev-server": "^3.11.3",
"webpack-hot-middleware": "~2.24.3"
如果不可用, 可以先卸载@webpack-cli/serve和 "webpack-cli"再重新安装