获取TProtocolException:服务器端node.js thrift client的数据无效

获取TProtocolException:服务器端node.js thrift client的数据无效,node.js,thrift,Node.js,Thrift,我正在尝试使用node.js thrift客户端。服务器端出现错误 tImpleServer异常:N6Apache6Thrift8Protocol18TProtocolException:TProtocolException:无效数据 如何解决这个问题 我的示例.thrift文件是: struct Person{ 1: required string name_; 2: required map<i64,string> attribute1_; 3: required map<

我正在尝试使用node.js thrift客户端。服务器端出现错误

tImpleServer异常:N6Apache6Thrift8Protocol18TProtocolException:TProtocolException:无效数据

如何解决这个问题

我的示例.thrift文件是:

struct Person{
1: required string name_;
2: required map<i64,string> attribute1_;
3: required map<i64,i64> attribute2_;
4: required map<i64,string> attribute3_;
}

service ProcessPerson { 
 void DoPerson(
       1: required list<Person> person_array 
         )
}

我正在服务器端使用骨架文件。

我以前见过这个问题。 原因是接收到的结构消息无效,因为它没有设置thrift中“必需”的字段

请确保客户端设置了所有必需字段

PS:我不知道如何检查NodeJS代码。我用C++编写代码,可以用y-iSSET机制检查< /P>
var thrift = require('thrift');
var ttransport = require('./node_modules/thrift/lib/thrift/transport.js');
var tprotocol = require('./node_modules/thrift/lib/thrift/protocol.js');
var b_conn = thrift.createConnection('localhost', 9090, {transport: ttransport.TBufferedTransport ,protocol: tprotocol.TBinaryProtocol});
var ServicePerson = require('./person_js/ProcessPerson.js');
var type = require('./person_js/person_types');

b_conn.on('error', function(err) {
   console.error("error");
   console.error(err);
});

b_conn.on('connect', function(data) {
   console.log('on conect');
   var client = thrift.createClient(ServicePerson, b_conn);

   var person_list = new Array();
   var person_obj = new type.Person({name_:"aa", attribute1_:"",attribute2_:"",attribute3_: ""  });


   console.log(person_obj);
   person_list.push(person_obj);
   client.DoPerson(person_list, function() {
       console.log("Hi");
   });

});