尝试起床 & 运行 一个 Protobuf & JavaScript
Trying to get up & running with a Protobuf & JavaScript
我正在努力起床 运行 JavaScript & Protobuf。我克隆了这个存储库 (https://github.com/nyrobert/js-protobuf-example),它在 JavaScript 中提供了一个简单示例。它提供了一个简单的 Person
模式。
syntax = "proto3";
message Person {
int64 id = 1;
string name = 2;
string email = 3;
enum PhoneType {
HOME = 0;
WORK = 1;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phone = 4;
}
然后我用
编译了架构
$ protoc \
--proto_path=protocol_buffers/definitions \
--js_out=import_style=commonjs,binary:protocol_buffers/messages \
protocol_buffers/definitions/person.proto
并尝试 运行
'use strict';
var message = require('./protocol_buffers/messages/person_pb');
var person = new message.Person();
person.setId(1);
person.setName('John Doe');
person.setEmail('john.doe@gmail.com');
但是遇到了
$ node index.js master
.../js-protobuf-example/protocol_buffers/messages/person_pb.js:402
return jspb.Message.setProto3IntField(this, 1, value);
^
TypeError: jspb.Message.setProto3IntField is not a function
at proto.Person.setId (.../js-protobuf-example/protocol_buffers/messages/person_pb.js:402:23)
at Object.<anonymous> (.../js-protobuf-example/index.js:8:8)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
知道这里发生了什么吗?我的 Node 版本是 14.15.4。我的 Protobuf 版本是
"dependencies": {
"google-protobuf": "^3.4.0"
}
只需更改 package.json
中的 google-protobuf
版本:
"dependencies": {
"google-protobuf": "3.15.8"
}
我正在努力起床 运行 JavaScript & Protobuf。我克隆了这个存储库 (https://github.com/nyrobert/js-protobuf-example),它在 JavaScript 中提供了一个简单示例。它提供了一个简单的 Person
模式。
syntax = "proto3";
message Person {
int64 id = 1;
string name = 2;
string email = 3;
enum PhoneType {
HOME = 0;
WORK = 1;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phone = 4;
}
然后我用
编译了架构$ protoc \
--proto_path=protocol_buffers/definitions \
--js_out=import_style=commonjs,binary:protocol_buffers/messages \
protocol_buffers/definitions/person.proto
并尝试 运行
'use strict';
var message = require('./protocol_buffers/messages/person_pb');
var person = new message.Person();
person.setId(1);
person.setName('John Doe');
person.setEmail('john.doe@gmail.com');
但是遇到了
$ node index.js master
.../js-protobuf-example/protocol_buffers/messages/person_pb.js:402
return jspb.Message.setProto3IntField(this, 1, value);
^
TypeError: jspb.Message.setProto3IntField is not a function
at proto.Person.setId (.../js-protobuf-example/protocol_buffers/messages/person_pb.js:402:23)
at Object.<anonymous> (.../js-protobuf-example/index.js:8:8)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
知道这里发生了什么吗?我的 Node 版本是 14.15.4。我的 Protobuf 版本是
"dependencies": {
"google-protobuf": "^3.4.0"
}
只需更改 package.json
中的 google-protobuf
版本:
"dependencies": {
"google-protobuf": "3.15.8"
}