上线2年的Node+React项目Sequelize操作JSON列报parse未定义错误
Sequelize操作JSON类型字段报错
Cannot read property 'parse' of undefined解决方案 根因分析
该错误本质是Sequelize调用mysql2依赖的JSON解析方法时,对应的parser模块未正确加载,无版本更新仍触发问题的核心原因是项目未锁死子依赖版本时,mysql2或其依赖的sqlstring模块自动升级到了与当前Sequelize版本不兼容的版本,少部分场景由MySQL服务端近期版本升级、返回的JSON字段元数据格式变动导致。
修复步骤
- 第一步:先确认当前mysql2子依赖版本,执行以下命令查看安装版本:
npm ls mysql2(npm环境)或yarn list mysql2(yarn环境)
若Sequelize版本为v5及以下,mysql2版本高于2.3.3就会触发该JSON解析兼容问题。 - 第二步:快速临时修复,在package.json中强制锁定mysql2兼容版本:
npm环境新增overrides配置:
yarn环境新增{ "overrides": { "mysql2": "2.3.3" } }resolutions配置:
配置完成后删除node_modules目录和对应的锁文件(package-lock.json/yarn.lock),重新安装依赖即可恢复正常。{ "resolutions": { "mysql2": "2.3.3" } } - 第三步:长期兼容方案,将Sequelize升级到v6.19.0及以上版本,该版本已修复与高版本mysql2的JSON解析兼容问题,升级后无需额外锁定mysql2版本。
- 额外排查:若锁定版本后问题仍存在,检查MySQL服务端是否近期升级到8.0.28及以上版本,该版本调整了JSON字段的返回元数据格式,需同步升级Sequelize到适配版本即可解决。
内容的提问来源于stack exchange,提问作者Armin Ferhatbegović
相关产品推荐
相关产品推荐

