Odoo 15访问POS菜单触发TypeError错误,求解决方案
Odoo 15 POS菜单访问报错TypeError: Cannot read properties of undefined (reading 'type') 排查方案
使用Odoo 15时,安装某一与POS无关且无JavaScript代码的自定义模块后,访问Point of Sale菜单持续触发以下错误:
TypeError: Cannot read properties of undefined (reading 'type') at ControlPanelModelExtension._extractAttributes (http://localhost:5050/web/assets/debug/web.assets_backend.js:45261:46) at http://localhost:5050/web/assets/debug/web.assets_backend.js:45117:26 (/web/static/src/legacy/js/control_panel/control_panel_model_extension.js:959) at Array.forEach (<anonymous>) (/web/static/src/legacy/js/control_panel/control_panel_model_extension.js:815) at ControlPanelModelExtension._createGroupOfFiltersFromArch (http://localhost:5050/web/assets/debug/web.assets_backend.js:45074:24) (/web/static/src/legacy/js/control_panel/control_panel_model_extension.js:772) at ControlPanelModelExtension._addFilters (http://localhost:5050/web/assets/debug/web.assets_backend.js:44900:18) (/web/static/src/legacy/js/control_panel/control_panel_model_extension.js:598) at ControlPanelModelExtension.prepareState (http://localhost:5050/web/assets/debug/web.assets_backend.js:44523:22) (/web/static/src/legacy/js/control_panel/control_panel_model_extension.js:221) at ControlPanelModelExtension.importState (http://localhost:5050/web/assets/debug/web.assets_backend.js:93594:22) (/web/static/src/legacy/js/model.js:81) at ActionModel.importState (http://localhost:5050/web/assets/debug/web.assets_backend.js:93873:27) (/web/static/src/legacy/js/model.js:360) at new Model (http://localhost:5050/web/assets/debug/web.assets_backend.js:93769:18) (/web/static/src/legacy/js/model.js:256) at new ActionModel (http://localhost:5050/web/assets/debug/web.assets_backend.js:63508:5) (/web/static/src/legacy/js/views/action_model.js:59)
已尝试创建新数据库、更新Odoo源码,问题仍未解决。
原因分析
报错指向前端解析控制面板过滤器时,无法读取某个对象的type属性,说明后端传递给前端的过滤器数据或视图XML结构存在异常。虽然自定义模块无JS代码,但可能通过以下方式影响POS模块:
- 意外继承/修改了POS相关模型(如
pos.order)的搜索视图XML,破坏了过滤器的结构定义; - 新增/修改了全局或POS相关的
ir.filters数据,存在缺少type字段的不完整过滤器; - 继承了
ir.ui.view或ir.filters模型,修改了原有数据结构或逻辑,导致过滤器数据异常。
解决思路
- 排查自定义模块的视图文件:检查模块内所有XML文件,确认是否继承了POS相关的搜索视图(如
pos.order_search),或全局控制面板视图,查看是否存在过滤器标签(<filter>)缺少type属性,或继承时错误覆盖了原视图结构。 - 检查自定义模块的过滤器数据:查看模块内
data目录下的ir.filters记录,确认是否有针对POS模型的过滤器定义,或全局过滤器存在字段缺失(尤其是type字段)。 - 验证模型继承影响:若模块继承了
ir.ui.view或ir.filters模型,检查是否新增了字段、修改了原有方法,导致过滤器数据在传递到前端时结构异常。 - 开发者模式下检查POS视图结构:启用开发者模式,打开POS菜单对应的动作(如“POS Orders”),查看其关联的搜索视图XML,检查过滤器组是否存在异常节点。
- 逐步隔离测试:临时禁用该自定义模块,确认POS菜单恢复正常,再逐步注释模块内的XML、数据文件,定位到具体导致问题的代码段。
内容的提问来源于stack exchange,提问作者Ka_
相关产品推荐
相关产品推荐

