Hid*_*ork 5 javascript protocol-buffers visual-studio-code
通常,我的 VSCode 安装会在我的 Javascript 项目中提供智能感知提示。但是,我在让 VSCode 显示/注册从另一个 JavaScript 文件导入的消息类型的智能感知时遇到问题,该文件是通过 protocol buffer 编译器生成的protoc。
下面是我面临的问题的屏幕截图。根据下面添加的 protobuf 文件,我期望该对象具有setId(), setName(),函数。但是,VSCode 似乎无法识别该类型。setSalary()jeffSchema.Employee
我可以做些什么来让智能感知处理从协议缓冲区生成的类型吗?
reprex使用 VSCode 1.50.1 和 protoc 版本进行测试libprotoc 3.13.0:
我使用编译了以下 protobuf 文件
protoc --js_out=import_style=commonjs,binary:. employees.proto
Run Code Online (Sandbox Code Playgroud)
这会产生employees_pb.js
员工.proto
protoc --js_out=import_style=commonjs,binary:. employees.proto
Run Code Online (Sandbox Code Playgroud)
索引.js:
syntax = "proto3";
option optimize_for = SPEED;
message Employee {
int32 id = 1;
string name = 2;
float salary = 3;
}
message Employees {
repeated Employee employees = 1;
}
Run Code Online (Sandbox Code Playgroud)
包.json:
// import schema from compiled file
const Schema = require("./employees_pb");
//create a new instance of Employee
const jeff = new Schema.Employee();
jeff.setId(1001); // <-- Intellisense does not work here.
jeff.setName("Jeff");
jeff.setSalary(1001);
Run Code Online (Sandbox Code Playgroud)
小智 3
在您的employees_pb文件中,您可以更改最后一行以获得完整的智能感知:
module.exports = {...goog, ...proto};
// goog.object.extend(exports, proto);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,导出扩展不起作用?我就这个话题打开了这个问题。