qishibo/AnotherRedisDesktopManager · error

e.message

Error message

e.message

What it means

Element UI toast that displays the raw e.message from a rejected Electron dialog.showOpenDialog() promise in the protobuf viewer's selectProto(). showOpenDialog (via the remote/ipcRenderer bridge) rejects when the file picker cannot be created or the IPC round-trip fails — e.g. the parent window is closing, the dialog service is unavailable, or the renderer was reloading mid-call. The catch simply forwards whatever the rejection says, so the visible text is whatever Electron reported.

Source

Thrown at src/components/viewers/ViewerProtobuf.vue:141

    copyContent() {
      return JSON.stringify(this.newContent);
    },
    selectProto() {
      dialog.showOpenDialog({
        securityScopedBookmarks: true,
        properties: ['openFile', 'multiSelections'],
        filters: [
          {
            name: '.proto',
            extensions: ['proto'],
          },
        ],
      }).then((result) => {
        if (result.canceled) return;

        this.loadProtoFiles(result.filePaths || [], result.bookmarks || [], true);
      }).catch((e) => {
        this.$message.error(e.message);
      });
    },
    restoreBinding() {
      const profile = storage.getProtobufProfileByRedisKey(this.keyHex);
      if (!profile || !profile.paths) {
        return;
      }

      this.loadProtoFiles(profile.paths, profile.bookmarks || [], false);
    },
    loadProtoFiles(paths, bookmarks = [], persist = false) {
      if (!paths.length) {
        return Promise.resolve(false);
      }

      // file not found
      const missing = paths.filter(p => !fs.existsSync(p));
      if (missing.length) {

View on GitHub (pinned to c149855106)

Solutions

  1. Dismiss and click the select-proto button again once the window is stable
  2. Upgrade Electron — older versions had dialog promise rejections on window teardown
  3. If it reproduces consistently, drop 'securityScopedBookmarks' from the options on non-macOS platforms (bookmarks are macOS-only)
  4. Log the full error (e.message plus stack) via console/error monitoring to identify the actual cause

Example fix

// before
}).catch((e) => {
  this.$message.error(e.message);
});

// after - tolerate teardown, surface real errors with context
}).catch((e) => {
  if (!e || e.message === 'Object has been destroyed') return;
  this.$message.error(`Open dialog failed: ${e.message}`);
});
Defensive patterns

Strategy: try-catch

Try / catch

dialog.showOpenDialog({...}).then((result) => {
  if (result.canceled) return;
  this.loadProtoFiles(result.filePaths || [], result.bookmarks || [], true);
}).catch((e) => {
  // ignore teardown noise; surface actionable failures with context
  if (!e || /Object has been destroyed/.test(e.message)) return;
  this.$message.error(`Open dialog failed: ${e.message}`);
});

Prevention

When it happens

Trigger: Invoking the .proto file picker (selectProto button) and the underlying Electron dialog promise rejecting — commonly when the window is destroyed while the native dialog is open, or when securityScopedBookmarks:true is used on a non-macOS platform in an environment that errors on it.

Common situations: Closing the app window while the OS file dialog is open; running on Windows/Linux where 'securityScopedBookmarks' is not supported (normally ignored, but custom builds/older Electron versions can reject); dialog permission problems in sandboxed/Flatpak Linux packages.

Related errors


AI-assisted analysis of qishibo/AnotherRedisDesktopManager@c149855106 (2026-08-22). Data as JSON: /api/errors/4fcad7ebc22bcf65. Report an issue: GitHub.