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

使用Symfony+VueJs开发网站执行Encore命令时遇Webpack错误

解决Encore dev-server运行时的"Callback was already called"错误与Tapable.plugin警告

我之前也碰到过一模一样的问题,本质都是依赖版本不兼容搞出来的——Tapable的废弃警告是因为部分包还在使用旧API,而neo-async的回调重复调用则是异步流程因版本冲突出现的异常。下面是亲测有效的解决步骤:

1. 彻底清理并重装依赖

损坏的依赖缓存或版本冲突是这类问题的常见源头,先把旧的依赖文件全部清掉:

# 删除node_modules和锁文件
rm -rf node_modules package-lock.json yarn.lock

# 重新安装依赖(根据你用的包管理器选一个)
npm install
# 或者
yarn install

2. 确保Encore与Webpack版本匹配

Symfony Encore对Webpack版本有严格的兼容性要求:

  • Encore v1.x 适配 Webpack 4
  • Encore v2.x 适配 Webpack 5

如果你的项目还在使用旧版Encore,建议直接升级到最新版(适配Webpack 5),能从根源解决Tapable的API问题:

npm install @symfony/webpack-encore@latest --save-dev

升级后记得检查你的webpack.config.js,Encore v2有一些API变化(比如enableVueLoader()的调用方式、入口配置等),调整成新版要求的写法即可。

3. 更新相关插件到兼容版本

如果升级Encore后还有Tapable警告,那可能是vue-loader、babel-loader这类插件版本过低,不兼容Webpack 5的新API,更新它们:

# 更新Vue相关插件
npm install vue-loader@latest vue-template-compiler@latest --save-dev

# 更新Babel相关插件
npm install babel-loader@latest @babel/core@latest --save-dev

4. 重新运行dev-server

完成以上步骤后,再次执行你的启动命令,大概率就能正常运行了:

./node_modules/.bin/encore dev-server --https --port 9000

如果还是有缓存相关的问题,可以加上--no-cache参数强制禁用缓存:

./node_modules/.bin/encore dev-server --https --port 9000 --no-cache

内容的提问来源于stack exchange,提问作者user9740180

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:35