siyuan-note/siyuan · error

window.siyuan.languages.exportFileSaveFailed

Error message

window.siyuan.languages.exportFileSaveFailed

What it means

In outputImage (image export flow), the save/export step failed and the localized message exportFileSaveFailed is reported. The exported image could not be written, uploaded, or copied, e.g. the kernel save call failed or the OS clipboard/IPC write was rejected.

Source

Thrown at app/src/protyle/export/util.ts:178

        outputting = true;
        setActionDisabled(true);
        const msgId = showMessage(window.siyuan.languages.exporting, 0);
        const containerElement = exportDialog.element.querySelector(".b3-dialog__container") as HTMLElement;
        const oldHeight = containerElement.style.height;
        containerElement.style.height = "";
        /// #if MOBILE
        containerElement.style.width = "100vw";
        /// #endif
        const contentElement = exportDialog.element.querySelector(".b3-dialog__content") as HTMLElement;
        const oldOverflow = contentElement.style.overflow;
        contentElement.style.overflow = "hidden";
        if (!copyOnly) {
            setStorageVal(Constants.LOCAL_EXPORTIMG, window.siyuan.storage[Constants.LOCAL_EXPORTIMG]);
        }
        try {
            const blob = await renderImageBlob();
            if (!blob) {
                throw new Error(window.siyuan.languages.exportFileSaveFailed);
            }
            if (type === "copy") {
                let copied: boolean;
                if (isInAndroid()) {
                    const response = await uploadImageBlob(blob);
                    copied = response.code === 0;
                    if (copied) {
                        copyPNGByLink(response.data.file);
                    }
                } else {
                    copied = await writePNGBlob(blob);
                }
                hideMessage(msgId);
                if (!copied) {
                    return;
                }
                showMessage(window.siyuan.languages.copied);
            } else {

View on GitHub (pinned to 8641553a1f)

Solutions

  1. Check free disk space and write permissions for the export directory
  2. On Android verify uploadImageBlob succeeded before copy
  3. Retry the export after closing other dialogs that may hold the clipboard
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at app/src/protyle/export/util.ts:178 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of siyuan-note/siyuan@8641553a1f (2026-09-11). Data as JSON: /api/errors/86b4330ca6eabcf8. Report an issue: GitHub.