user.proto에서 nickname 필드를 정의했으나, Nest.js gRPC 서버에서 해당 필드가 계속 누락되어 들어왔음grpcurl과 BloomRPC로 요청해도 nickname이 서버에 전달되지 않았음dist/ 내부)였기 때문임user.proto에서 optional string nickname = 3; 명시ts-proto 명령에서 아래 옵션 사용:--ts_proto_opt=nestJs=true,outputServices=grpc-js,useOptionals=messages,env=node,addGrpcMetadata=true
--experimental_allow_proto3_optionalprotoPath를 dist 내 경로가 아닌 원본 proto 절대경로로 지정:import { resolve } from 'path';
const PROTO_PATH = resolve(__dirname, '../../../../../proto/user.proto');brew install grpcurl
GitHub Release에서 다운로드:
https://github.com/fullstorydev/grpcurl/releases
grpcurl -plaintext localhost:50051 list
서비스 목록 확인
grpcurl -plaintext -proto ./proto/user.proto -d '{"email":"test@test.com","password":"1234","nickname":"tester"}' localhost:50051 user.UserService.SignUp
--experimental_allow_proto3_optional 꼭 넣어야 함useOptionals=true 대신 useOptionals=messages 로 업데이트 필요함dist를 참조하고 있어서 Nest.js 서버가 잘못된 proto 정의로 메시지 파싱함resolve(process.cwd(), 'proto/user.proto') 또는 절대경로로 수정