qishibo/AnotherRedisDesktopManager · error
Proto Verify Failed: ${err}
Error message
Proto Verify Failed: ${err} What it means
Element UI toast shown when protobufjs type.verify(message) returns a non-null error string after type.fromObject(content) builds the message. verify() is protobufjs's runtime schema check: it reports missing required fields, wrong scalar types, and invalid enum values, returning a descriptive string like 'FieldX: illegal value' or '.message.field: required field missing' which is interpolated into this toast.
Source
Thrown at src/components/viewers/ViewerProtobuf.vue:117
this.$message.error('Select a correct Type to encode');
return false;
}
let content = this.$refs.editor.getRawContent();
const type = this.protoRoot.lookupType(this.selectedType);
try {
content = JSON.parse(content);
} catch (e) {
this.$message.error(this.$t('message.json_format_failed'));
return false;
}
// toJSON() shows int64/uint64 as strings; fromObject converts them back
const message = type.fromObject(content);
const err = type.verify(message);
if (err) {
this.$message.error(`Proto Verify Failed: ${err}`);
return false;
}
return type.encode(message).finish();
},
copyContent() {
return JSON.stringify(this.newContent);
},
selectProto() {
dialog.showOpenDialog({
securityScopedBookmarks: true,
properties: ['openFile', 'multiSelections'],
filters: [
{
name: '.proto',
extensions: ['proto'],
},
],View on GitHub (pinned to c149855106)
Solutions
- Read the err string in the toast: it names the exact field and the violation (required missing / illegal value)
- Fix the named field in the JSON editor (restore required fields, correct the type, use a valid enum name)
- If the schema itself changed, reselect the .proto that matches how the data was written
- Add editor-side JSON-schema validation generated from the proto to catch issues before save
Example fix
// before
const err = type.verify(message);
if (err) {
this.$message.error(`Proto Verify Failed: ${err}`);
return false;
}
// after - keep the object so the user can correct it without losing edits
const err = type.verify(message);
if (err) {
this.$message.error({ message: `Proto Verify Failed: ${err}`, duration: 6000 });
return false;
} Defensive patterns
Strategy: validation
Validate before calling
const message = type.fromObject(content);
const err = type.verify(message);
if (err) {
this.$message.error(`Proto Verify Failed: ${err}`);
return false;
} Type guard
// protobufjs convention: verify returns null when valid const isValidMessage = (type, msg) => type.verify(msg) === null;
Prevention
- Always run type.verify() after fromObject() before encode() — encode() throws unhelpfully on bad values
- Keep required fields present when hand-editing decoded JSON
- Keep the bound .proto in sync with the schema that wrote the data
When it happens
Trigger: Deleting a field marked `required` in the .proto from the edited JSON and saving; typing a string into an int32 field (fromObject coerces where it can, verify catches what it cannot); setting an enum field to a name or number not declared in the enum; assigning an object where a repeated scalar array is expected.
Common situations: Editing decoded messages whose schema has required fields; hand-crafting enum values; schema drift — the Redis value was written with an older .proto that had different field types than the currently bound one.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- this.$t('message.json_format_failed')
- Select a correct .proto file
- Select a correct Type to encode
- Proto file not found, please reselect: ${missing.map(p => pa
- Fail to load proto: ${e.message}
AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22).
Data as JSON: /api/errors/caed5b37e35ed30d.
Report an issue: GitHub.