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

Odoo OWL组件调用rpc服务报错:Service rpc is not available 求助

解决Odoo OWL组件调用RPC服务时"Service rpc is not available"错误

出现这个错误的核心原因是你的OWL组件没有处于Odoo Web客户端的服务容器上下文当中,以下是具体解决步骤:

1. 确保组件在Odoo模块资产中正确注册

如果是在自定义Odoo模块中开发组件,需要将组件的JS文件添加到模块的__manifest__.py资产配置里,让Odoo加载时将组件纳入Web客户端上下文:

'assets': {
    'web.assets_backend': [
        # 替换为你的组件JS文件实际路径
        'devolive_review/static/src/js/review_under_name.js',
    ],
},

2. 通过Odoo框架机制加载组件

不能在独立环境(比如单独HTML页面)直接挂载组件,必须通过Odoo的视图、Action或Widget机制初始化组件,这样Odoo才会自动注入包括rpc在内的核心服务。

3. 独立测试环境的特殊处理(本地单独测试时)

如果需要在Odoo外部测试组件,必须手动构建服务容器并注册rpc服务:

import { Component, mount } from "@odoo/owl";
import { useService } from "@web/core/utils/hooks";
import { rpc } from "@web/core/network/rpc";
import { services } from "@web/core/services";

// 手动构建包含rpc服务的容器
const container = {
    services: {
        ...services,
        rpc: {
            dependencies: [],
            async start() {
                return rpc;
            },
        },
    },
};

export class ReviewUnderName extends Component {
    static template = "devolive_review.ReviewUnderName";
    static props = {};

    setup() {
        this.rpc = useService("rpc");
        this.loadData();
    }

    async loadData() {
        const response = await this.rpc(`/devolive/review/`);
        console.log("response", response);
    }
}

// 挂载时传入自定义容器
mount(ReviewUnderName, document.body, { container });

4. 验证后端路由正确性

同时要确保你调用的/devolive/review/路由已在后端正确注册,示例代码:

from odoo import http
from odoo.http import request

class ReviewController(http.Controller):
    @http.route('/devolive/review/', auth='user', type='json')
    def get_review_data(self):
        # 编写你的数据处理逻辑
        return {"status": "success", "data": []}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:12:36