qishibo/AnotherRedisDesktopManager · error

err

Error message

err

What it means

Element UI toast that forwards the Node fs error from writing the temporary hex file. When the edited value's hex length exceeds writeHexFileSize, ViewerCustom writes the hex string to a temp file (path from ipcRenderer 'getTempPath', named ardm_cv_<keyhex>) and substitutes {HEX_FILE} in the external command. fs.writeFile's callback receives a non-null err (front-of-callback Node convention) when the temp directory is unwritable, missing, or the path is invalid — the toast shows that err object/message and the command never executes.

Source

Thrown at src/components/viewers/ViewerCustom.vue:109

      );

      // in case of long content in template
      this.previewCommand = command.replace(
        '{VALUE}',
        this.$util.cutString(this.content.toString(), this.previewContentMax),
      );

      // if content is too long, write to file simultaneously
      // hex str is about 2 times of real size
      if (hexStr.length > this.writeHexFileSize) {
        ipcRenderer.invoke('getTempPath').then((reply) => {
          // target file name
          const fileName = `ardm_cv_${this.redisKey.toString('hex')}`;
          const filePath = require('path').join(reply, fileName);

          require('fs').writeFile(filePath, hexStr, (err) => {
            if (err) {
              return this.$message.error(err);
            }

            this.fullCommand = this.fullCommand
              .replace('{HEX_FILE}', filePath)
              .replace('{HEX}', '<Content Too Long, Use {HEX_FILE} Instead!>');
            this.previewCommand = this.previewCommand
              .replace('{HEX_FILE}', filePath)
              .replace('{HEX}', '<Content Too Long, Use {HEX_FILE} Instead!>');

            this.exec();
          });
        });
      }
      // common content just exec
      else {
        this.fullCommand = this.fullCommand
          .replace('{HEX}', hexStr)
          .replace('{HEX_FILE}', '<Use {HEX} Instead!>');

View on GitHub (pinned to c149855106)

Solutions

  1. Check the message text — EACCES means fix permissions on the temp dir, ENOENT means recreate TMPDIR, ENOSPC means free disk space
  2. Set TMPDIR to a writable location and restart the app
  3. Clear old ardm_cv_* files from the temp directory
  4. If it persists, raise writeHexFileSize so small-ish values stay inline via {HEX} instead of the temp-file path

Example fix

// before
require('fs').writeFile(filePath, hexStr, (err) => {
  if (err) {
    return this.$message.error(err);
  }
  ...
});

// after - actionable message incl. path
require('fs').writeFile(filePath, hexStr, (err) => {
  if (err) {
    return this.$message.error(`Cannot write ${filePath}: ${err.message}`);
  }
  ...
});
Defensive patterns

Strategy: try-catch

Validate before calling

// preflight: temp dir writable before launching the flow
const fs = require('fs');
const os = require('os');
fs.accessSync(os.tmpdir(), fs.constants.W_OK);

Try / catch

require('fs').writeFile(filePath, hexStr, (err) => {\n  if (err) {\n    // actionable message including the failing path\n    this.$message.error(`Cannot write ${filePath}: ${err.message}`);\n    return;\n  }\n  this.exec();\n});

Prevention

When it happens

Trigger: Editing a very large value in the custom viewer (hex string over the configured threshold) while the OS temp dir is not writable: TMPDIR pointing to a deleted directory, disk full, permissions changed, or antivirus locking temp writes on Windows; the getTempPath reply containing a path that does not exist in the renderer's context.

Common situations: CI/containers where /tmp is read-only or TMPDIR is stale; macOS with low disk space; running as a user without write access to the resolved temp path; leftover ardm_cv_* files accumulating until quota is hit.

Related errors


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