Node.js 20+环境下gRPC服务server.start()弃用后的替代方案咨询
Node.js 20+ 中 gRPC server.start() 弃用后的替代方案
在新版gRPC Node.js库(配合Node.js 20+使用时),server.start()方法已被弃用,核心原因是调用bindAsync完成端口绑定后,服务会自动启动,无需再手动执行启动操作。
正确的服务启动写法
你当前注释掉server.start()的代码已经是合规的正确写法,完整示例如下:
function main() { var server = new grpc.Server(); server.addService(hello_proto.Greeter.service, {sayHello: sayHello}); server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), (error, port) => { if (error) { console.error(`Server binding failed: ${error.message}`); return; } console.log(`Server running at http://0.0.0.0:${port}`); // 无需调用 server.start(),服务已自动启动 }); }
关键注意点
- 当
bindAsync的回调函数无错误执行时,gRPC服务已经完成绑定并处于运行状态,额外调用server.start()会触发弃用警告 - 若仍在使用旧版
grpc包,建议迁移到官方维护的@grpc/grpc-js包,两者的该行为逻辑一致 - 后续版本的gRPC库可能会彻底移除
server.start()方法,尽早移除该调用可避免兼容性问题
内容的提问来源于stack exchange,提问作者Hiwa Sedradin
相关产品推荐
相关产品推荐

