Odoo 10.0社区版未登录时自定义主题加载依赖警告求助
解决Odoo 10未登录时web.assets_common.js的CSV模块警告问题
结合你描述的场景——仅未登录状态出现警告、仅自定义主题触发,大概率是主题的资源加载逻辑或代码调用在未登录态下触发了不该加载的依赖。下面是具体的排查和解决步骤:
1. 检查自定义主题的资产配置
Odoo的web.assets_common是未登录/登录状态都会加载的公共资产包,如果你在主题里把仅登录后才需要的资源(比如CSV导出相关的JS/CSS)加到了这个包里,就会触发警告。
- 打开主题模块的XML文件,查找类似这样的代码:
<template id="custom_theme_assets_common" inherit_id="web.assets_common"> <xpath expr="." position="inside"> <!-- 检查这里是否引入了csv相关的资源,比如web_export_csv的js --> <script type="text/javascript" src="/web_export_csv/static/src/js/export_csv.js"></script> </xpath> </template> - 把这类仅登录后才需要的资源,移到
web.assets_backend(后台登录后加载)或对应前台登录态的资产包中,比如:<template id="custom_theme_assets_backend" inherit_id="web.assets_backend"> <xpath expr="." position="inside"> <script type="text/javascript" src="/web_export_csv/static/src/js/export_csv.js"></script> </xpath> </template>
2. 排查主题JS代码的登录态判断
如果主题的JS代码在未登录时就尝试调用CSV相关模块的方法,也会触发警告。
- 打开浏览器调试工具,在警告信息处打断点,查看调用栈,定位到主题中具体触发代码的位置。
- 在调用CSV相关逻辑前,先判断用户是否登录:
// Odoo 10中可以通过session_info判断登录状态 if (odoo.session_info.uid !== false) { // 这里执行需要登录态的CSV相关逻辑 }
3. 清理Odoo资产缓存
有时候旧的资产打包缓存会导致资源引用残留,尤其是修改了资产配置后:
- 重启你的VPS上的Odoo服务;
- 删除Odoo数据库对应的资产缓存目录,路径一般是
odoo/filestore/<你的数据库名>/assets,清空该目录下的所有文件; - 浏览器端硬刷新(Ctrl+F5),清除本地缓存。
4. 检查主题的模块依赖
查看主题__manifest__.py中的depends字段,确认是否依赖了不必要的CSV相关模块(比如web_export_csv)。如果这些模块不是主题必须的,可以移除依赖;如果必须依赖,确保其资源仅在登录态下加载。
完成以上操作后,切换到未登录状态刷新页面,查看控制台警告是否消失。如果问题仍然存在,可以进一步通过调试工具追踪调用栈,定位更具体的触发点。
内容的提问来源于stack exchange,提问作者user5661230
相关产品推荐
相关产品推荐

