切换Vaadin版本后出现Webpack exited prematurely异常求助
解决Vaadin 14切回分支后Webpack启动失败问题
问题描述
我开发的项目基于Vaadin 14.4.10和Node.js 14.16.1,此前运行正常。唯一变动是在本地分支将Vaadin版本升级至23.3.6(新版本采用Vite替代Webpack构建),切回Vaadin 14的develop分支后,前端无法启动,抛出如下错误:
java.lang.IllegalStateException: Webpack exited prematurely com.vaadin.flow.server.DevModeHandler.doStartWebpack(DevModeHandler.java:657) com.vaadin.flow.server.DevModeHandler.doStartDevModeServer(DevModeHandler.java:583) com.vaadin.flow.server.DevModeHandler.runOnFutureComplete(DevModeHandler.java:530) com.vaadin.flow.server.DevModeHandler.lambda$new$0(DevModeHandler.java:146) java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859) java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837) java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:479) java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:290) java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java) java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
已尝试操作
- 执行
mvn clean install - 执行
npm install、npm install webpack - 执行
mvn clean process-resources - 下载最新Node.js LTS版本后重新清理安装
- 在新工作区拉取项目并重复清理安装流程
- 删除
node_modules文件夹及package.json、package-lock.json、webpack.config.js、webpack.generated.js后执行npm install
补充信息
尝试运行Vaadin官方14教程项目,仍出现相同错误,页面显示500白标错误,日志如下:
There was an unexpected error (type=Internal Server Error, status=500). java.lang.IllegalStateException: Webpack exited prematurely com.vaadin.flow.server.ServiceException: java.lang.IllegalStateException: Webpack exited prematurely at com.vaadin.flow.server.VaadinService.handleExceptionDuringRequest(VaadinService.java:1596) at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1559) at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:247) at com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:111) at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:711) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:353) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:313) at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:141) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:51) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.IllegalStateException: Webpack exited prematurely at com.vaadin.flow.server.DevModeHandler.doStartWebpack(DevModeHandler.java:657) at com.vaadin.flow.server.DevModeHandler.doStartDevModeServer(DevModeHandler.java:583) at com.vaadin.flow.server.DevModeHandler.runOnFutureComplete(DevModeHandler.java:530) at com.vaadin.flow.server.DevModeHandler.lambda$new$0(DevModeHandler.java:146) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837) at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ... 1 more
解决建议
1. 彻底清理Node相关缓存与全局依赖
- 执行
npm cache clean --force清空npm全局缓存 - 卸载全局安装的Vite包:
npm uninstall -g vite - 确保系统PATH中仅包含Node.js 14.16.1的路径,避免新版本Node干扰
2. 用Vaadin专用命令清理前端资源
- 执行
mvn vaadin:clean-frontend,该命令会彻底清除Vaadin生成的所有前端缓存与配置文件,比普通mvn clean更彻底 - 随后执行
mvn vaadin:prepare-frontend,让Vaadin重新生成适配14版本的Webpack配置和依赖清单
3. 检查IntelliJ的Node.js配置
- 打开
File > Settings > Languages & Frameworks > Node.js and NPM - 确认Node interpreter选择的是Node.js 14.16.1版本
- 勾选
Use npm from node.js installation,确保使用对应版本的npm工具
4. 清除IDE缓存
- 执行
File > Invalidate Caches...,选择Invalidate and Restart,清除IntelliJ中残留的旧版本Vaadin缓存
5. 检查系统环境变量
- 确认
NODE_ENV环境变量为development,若设置为production会导致Webpack启动异常 - 删除可能存在的
VAADIN_FRONTEND_BUILDER环境变量,避免强制使用Vite构建
6. 锁定Webpack版本
- 在项目根目录创建或修改
.npmrc文件,添加webpack@4.46.0(Vaadin 14兼容的稳定版本),确保安装的Webpack版本符合要求
内容的提问来源于stack exchange,提问作者mdenci
相关产品推荐
相关产品推荐

