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

Odoo 14 CE快速操作表单触发Cannot read properties of undefined报错

Odoo 14 CE Cannot read properties of undefined (reading 'prop') 报错解决方案

问题复现步骤

  • 进入销售模块创建销售报价单
  • 新增报价单行
  • 选择关联产品
  • 填写产品数量
  • 数量填写完成后立刻快速修改单价即可触发报错
  • 所有带字段联动逻辑的表单,只要连续快速操作联动字段均可复现该问题

报错截图:
报错截图

问题成因

该报错属于Odoo 14 CE前端JS框架的竞态条件漏洞,触发逻辑如下:
Odoo表单的联动字段(如产品、数量)修改后,会自动触发onchange异步请求拉取关联字段的默认值(如自动定价、税费),同时更新当前行的前端状态对象。若异步请求还未返回、状态对象未完成挂载时,用户快速操作后续字段,JS逻辑尝试读取未初始化状态对象的prop属性,就会触发undefined读取报错。

修复方案

临时规避方案

操作联动字段后稍作停顿(100ms-200ms),待前端自动更新完成后再填写下一个字段,即可避免触发报错。

永久修复方案

修改前端表单逻辑,增加非空兼容处理:

  1. 找到Odoo源码路径下的/web/static/src/js/views/form/form_editor.js文件
  2. 定位到读取prop属性的代码段,原逻辑类似:
const propValue = currentRecord.data[fieldName].prop;
  1. 增加非空判断,修改为兼容逻辑:
// 可选链写法,适配现代浏览器
const propValue = currentRecord.data[fieldName]?.prop ?? '默认值';

// 兼容低版本浏览器写法
const propValue = currentRecord.data[fieldName] && currentRecord.data[fieldName].prop ? currentRecord.data[fieldName].prop : '默认值';
  1. 保存修改后,执行web模块升级命令:
./odoo-bin -u web -c 你的配置文件路径.conf
  1. 重启Odoo服务,清理浏览器缓存后问题即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:36:02