使用@payloadcms/bundler-webpack 1.0.5时遇Webpack缓存序列化错误
Webpack PackFileCacheStrategy 序列化错误解决方案
使用@payloadcms/bundler-webpack 1.0.5版本构建项目时,触发以下缓存序列化错误:
[webpack.cache.PackFileCacheStrategy] Caching failed for pack: Error: No serializer registered for ConcatSource
配置文件代码
payload.config.ts:
import { buildConfig } from 'payload/config' import { webpackBundler } from '@payloadcms/bundler-webpack' import { mongooseAdapter } from '@payloadcms/db-mongodb' import { slateEditor } from '@payloadcms/richtext-slate' import path from 'path' import { Users } from './collections/Users' import dotenv from 'dotenv' dotenv.config({ path: path.resolve(__dirname, '../.env'), }) export default buildConfig({ serverURL: process.env.NEXT_PUBLIC_SERVER_URL || '', collections: [Users], routes: { admin: '/sell', }, admin: { user: 'users', bundler: webpackBundler(), meta: { titleSuffix: '- DigitalHippo', favicon: '/favicon.ico', ogImage: '/thumbnail.jpg', }, }, rateLimit: { max: 2000, }, editor: slateEditor({}), db: mongooseAdapter({ url: process.env.MONGODB_URL!, }), typescript: { outputFile: path.resolve(__dirname, 'payload-types.ts'), }, })
关键信息
- 需求:打包器正常运行,无序列化错误
- 当前版本:
@payloadcms/bundler-webpack1.0.5 - 错误触发点:Webpack的PackFileCacheStrategy缓存序列化过程
- 触发场景:使用上述配置构建项目时
- 前置操作:已按Payload文档完成集合、路由、打包器等基础配置
可行解决方案
1. 临时禁用Webpack缓存
修改webpackBundler配置,直接关闭缓存功能:
admin: { // ...其他配置 bundler: webpackBundler({ webpackConfig: (config) => { config.cache = false; return config; }, }), },
2. 升级打包器版本
该序列化问题在@payloadcms/bundler-webpack的后续版本中已被官方修复,直接升级到最新稳定版即可:
npm update @payloadcms/bundler-webpack # 或者使用yarn yarn upgrade @payloadcms/bundler-webpack
3. 自定义缓存序列化规则
若需要保留缓存功能,可手动为ConcatSource注册序列化器:
admin: { // ...其他配置 bundler: webpackBundler({ webpackConfig: (config) => { config.cache = { type: 'filesystem', buildDependencies: { config: [__filename], }, serialize: { ConcatSource: (source) => source.source(), }, }; return config; }, }), },
内容的提问来源于stack exchange,提问作者K khan
相关产品推荐
相关产品推荐

