Payload CMS(网站模板)Webpack缓存序列化失败问题求助
Payload CMS Webpack缓存序列化错误解决方法
问题描述
执行npm run dev后Webpack编译成功,但出现以下缓存警告:
<w> [webpack.cache.PackFileCacheStrategy] Caching failed for pack: Error: No serializer registered for ConcatSource <w> while serializing webpack/lib/util/registerExternalSerializer.webpack-sources/ConcatSource -> Array { 2 items } -> ConcatSource
缓存失效导致每次修改代码重启服务器需等待20-30秒,环境为Node v20.11.1、Webpack 8.6.0,所有依赖均为最新版本。
解决方法
临时切换Webpack缓存类型
在Payload的配置文件(通常是payload.config.ts)中修改Webpack配置,用内存缓存替代文件系统缓存:export default buildConfig({ // 其他配置项 webpack: (config) => { config.cache = { type: 'memory', }; return config; }, });内存缓存不会触发序列化错误,重启后虽仍需重新编译,但读写速度更快,能降低延迟。
降级Webpack到稳定兼容版本
Webpack 8.x属于新版本,可能与Payload现有配置存在兼容性问题,尝试降级到Webpack 5.x稳定版:- 卸载当前Webpack依赖:
npm uninstall webpack webpack-cli - 安装指定版本:
npm install webpack@^5.90.0 webpack-cli@^5.1.4 --save-dev
重新执行
npm run dev验证缓存是否恢复正常。- 卸载当前Webpack依赖:
统一
webpack-sources依赖版本
多版本webpack-sources可能引发序列化冲突,先检查依赖树:npm list webpack-sources若存在重复版本,在
package.json中添加版本锁定:"resolutions": { "webpack-sources": "^3.2.3" }npm用户需先安装
npm-force-resolutions工具,再执行npm install重新安装依赖。彻底清理依赖与缓存
清理现有依赖和缓存后重新安装:- 删除依赖文件夹和锁文件:
rm -rf node_modules package-lock.json - 清除npm缓存:
npm cache clean --force - 重新安装依赖:
npm install
- 删除依赖文件夹和锁文件:
内容的提问来源于stack exchange,提问作者Miratek
相关产品推荐
相关产品推荐

