k8w / tsrpc

A TypeScript RPC framework, with runtime type checking and serialization, support both HTTP and WebSocket. It is very suitable for website / APP / games, and absolutely comfortable to full-stack TypeScript developers.
MIT License
1.9k stars 203 forks source link

使用any类型发送,服务端的req里没有该字段 #13

Closed iclouden closed 2 years ago

iclouden commented 2 years ago

tsrpc:3.1.9 服务端的代码和日志截图: image image image

客户端发送的日志截图: image

补充一个,serviceProto.ts确实有生成这字段: image

求解

k8w commented 2 years ago

可否提供一个最小可重现的 demo 呀?

或可以尝试一下几种方式:

  1. 确认 serviceProto.ts 是否在前后端一致?
  2. 升级前后端的 tsrpc 及 tsrpc-browser 到最新版本
iclouden commented 2 years ago

testAny.zip 两个app分别npm install 重现步骤: 先启动gate, 再启动backend

iclouden commented 2 years ago

我找到问题了 是客户端的serviceProto.ts没有同步 我是配置成copy方式同步

但我觉得按正常操作, 两边都启动了,应该会执行同步, 除非说文件比较方面有什么逻辑漏洞导致, 这文件在某个时候被同步规则检测遗漏

k8w commented 2 years ago

但我觉得按正常操作, 两边都启动了,应该会执行同步, 除非说文件比较方面有什么逻辑漏洞导致, 这文件在某个时候被同步规则检测遗漏

@fengssy 确实如此,npm run dev 期间,文件变化会自动同步,但不在 npm run dev 期间的文件变化,就不会同步了。 是否有在 npm run dev 之外,单独进行过 npm run proto 的操作呀?

iclouden commented 2 years ago

我能重现问题现象了: 启动前服务端改了协议字段, 再执行 tsrpc-cli dev 这时候serviceProto.ts生成新的了,但没执行同步操作, 导致客户端文件是旧的 image

所以建议启动时,在生成后,也执行/检测一下同步

k8w commented 2 years ago

收到,我看一下,下个小版本优化。