You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

切换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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:39:21