nodejs 调用 dubbo 接口报错

2022-10-10 01:26:57 +08:00
 873792861
如题,对 nodejs 还不熟悉。按这里的指引,尝试用 dubbo-js 调用 dubbo-samples 的 sayhello 接口。一共两个文件,dubbo-test.ts 的内容如下
`
import { Dubbo } from 'apache-dubbo-consumer'
import { Zk} from 'apache-dubbo-registry'
import {HelloService} from './service'

const dubbo = new Dubbo<typeof HelloService>({
application: {name: 'dubbo-node-bff'}, // 标记调用方,信息存储在注册中心,方便排查问题
registry: Zk({ connect: '192.168.1.122:2181' }), // 以 Zk 作为注册中心,详细的初始化参考 @apache/dubbo-registry 的 api
services:HelloService, // 代理的服务 // boolean 可选参数 是否开启对 dubbox 的支持
dubboInvokeTimeout:15, // number 可选参数 最大超时时间 默认 5s
// string 可选参数 设置 dubbo 版本
// 设置调用元数据 可选参数
});
//main method
dubbo.service.HelloService.sayHello('dd');
`
service.ts 的内容如下:
`
import { Dubbo, TDubboCallResult } from 'apache-dubbo-consumer'

// 获取更好的代码提示
export interface IHelloService {
sayHello(name: string): TDubboCallResult<string>
}

export const HelloService = (dubbo: Dubbo) =>
dubbo.proxyService<IHelloService>({
dubboInterface: 'org.apache.dubbo.service.HelloService',
methods: {
sayHello(name: string) {
return [name] // 此处为代理方法,不需要具体的实现,我们只需要将参数透传即可,这样 dubbo-consumer 就可以获取完整的服务信息
}
}
})
`
但是运行一直报错:Property 'HelloService' does not exist on type 'TDubboService<(dubbo: Dubbo<Object>) => IHelloService>'.
这是要什么修改呢?希望大家能够多多指点
3643 次点击
所在节点    Node.js
3 条回复
zbinlin
2022-10-10 22:10:52 +08:00
new Dubbo 接受的泛型应该是一个对象来的,services 的值也一样

import {HelloService} from './service'
改成
import services from './service.mjs'

services:HelloService
改成
services,

export const HelloService = (dubbo: Dubbo) =>
改成
const HelloService = (dubbo: Dubbo) =>

同时在最后 exportdefault 一个包含 HelloService 的对象:
export default {
HelloService
}
873792861
2022-10-11 23:53:03 +08:00
@zbinlin 非常感谢您!按你所说的去改,确实可以执行了,但是报错:res: null,
err: DubboDecodeError: only support hessian serialization
zbinlin
2022-10-12 11:34:54 +08:00
@873792861 从 `apache-dubbo-consumer` improt 一个 `java` 进来,然后将 `return [name] ` 改成 `return [java.String(name)] `

PS: 如没必要,真的不建议去用这个东西。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/885654

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX