NestJS中使用谷歌Cloud Speech-to-Text的.proto运行gRPC报错求解决
问题原因及对应解决方案
- 配置字段错误
你代码中的gRPC配置项写错了,options下定义监听地址的字段应为url,不是options,修改后的配置如下:
async function bootstrap() { const app = await NestFactory.createMicroservice(AppModule, { transport: Transport.GRPC, options: { url: 'localhost:3001', package: 'google.cloud.speech.v1p1beta1', protoPath: join(__dirname, './speech/speech.proto'), loader: { includeDirs: [join(__dirname, './speech')] } } }); await app.listen(); console.log(`Microservice is listening`); }
新增的loader.includeDirs配置是用来指定proto导入的根目录,方便加载依赖的其他proto文件。
proto依赖缺失
谷歌官方的Cloud Speech-to-Text proto不是独立文件,它依赖多个谷歌公共proto定义,包括但不限于google/api/annotations.proto、google/rpc/status.proto、google/longrunning/operations.proto。你需要将这些依赖的proto文件按照导入路径的目录结构,放到你指定的includeDirs对应目录下,否则加载proto时会找不到依赖抛出错误。额外说明
如果你只是需要调用谷歌Cloud Speech-to-Text的服务,不需要自行搭建gRPC服务端实现,直接使用谷歌官方提供的Node.js客户端包即可,无需手动处理proto加载逻辑。
内容的提问来源于stack exchange,提问作者SnoopyDog
相关产品推荐
相关产品推荐

