hmjz100/LinkSwift · warning · Error

提示:<br/>文件夹是空的哦~

Error message

提示:<br/>文件夹是空的哦~

What it means

Thrown when all selected items are folders and, after recursively fetching their contents via getFilesList(), the resulting `files` array is still empty — i.e. every selected folder contains no downloadable files. The script flattens folder contents but ends with zero file entries to resolve URLs for.

Source

Thrown at (改)网盘直链下载助手.user.js:6098

						clearInterval(interval);
						throw new Error("提示:<br/>时间太长,我先撤下啦~");
					}
				}, 1000);
				return;
			}

			// 获取选择的文件列表
			const selects = this.getSelectedList();
			if (selects.length === 0) throw new Error("提示:<br/>请勾选要下载的文件哦~");

			$doc.find(".loading-popup .loading-title").html(`链接获取中`);
			$doc.find(".loading-popup .swal2-html-container").html(`<div>正在获取文件对应的下载链接~</div>`);

			let files = selects.filter(f => !f.isdir);
			const dirs = selects.filter(f => f.isdir);
			if (temp.page === "home" || temp.page === "main") {
				if (dirs.length > 0) files = files.concat(await this.getFilesList(dirs, token, files.length));
				if (!files.length) throw new Error("提示:<br/>文件夹是空的哦~");

				$doc.find(".loading-popup .loading-title").html(`链接获取中`);
				$doc.find(".loading-popup .swal2-html-container").html(`<div>正在获取文件对应的下载链接~</div>`);

				files = await this.getFilesUrl(files, token).catch(e => {
					if (e instanceof Error) throw e;
					throw new Error(e?.message || e || "[百度网盘] 获取文件 URL 失败");
				});
			} else if (temp.page === "share") {
				const shareData = await this.getShareData();

				const sign = await base.get(`${config.$baidu.api.getShareSign}&surl=1${shareData.share.url}$bdstoken=${shareData.baidu.token}&logid=${base.encodeBase(shareData.baidu.id)}`);
				if (sign?.data?.sign && sign?.data?.timestamp) {
					shareData.sign = sign.data.sign;
					shareData.timestamp = sign.data.timestamp;
				}

				files = await this.getShareFilesUrl(files, shareData, token).catch(e => {

View on GitHub (pinned to 417ea5e28a)

Solutions

  1. Select actual files, or folders that contain files, before downloading.
  2. Open an empty folder in the Netdisk UI and delete it or move files into it first.
  3. If the folder is not empty, check the script/Netdisk API token validity — an expired token can make getFilesList() return nothing.
Defensive patterns

Strategy: validation

Validate before calling

const dirs = selects.filter(f => f.isdir);
const flatFiles = await this.getFilesList(dirs, token, selects.filter(f => !f.isdir).length);
if (!flatFiles.length) { alert('所选文件夹内没有文件'); return; }

Type guard

null

Try / catch

try { await getLinks(); } catch (e) { if (String(e.message).includes('文件夹是空的')) { alert('所选文件夹为空,请选择含文件的文件夹'); return; } throw e; }

Prevention

When it happens

Trigger: `selects` contains only folders (`f.isdir` truthy); `this.getFilesList(dirs, token, files.length)` returns an empty array (folders are empty or enumeration fails silently), so `if (!files.length) throw new Error("提示:<br/>文件夹是空的哦~")` fires.

Common situations: User selects newly created/empty folders in Baidu Netdisk and clicks download; folder listing API returns pages filtered out by the script; user checks whole folder tree that contains only nested empty folders.

Related errors


AI-assisted analysis of hmjz100/LinkSwift@417ea5e28a (2026-09-02). Data as JSON: /api/errors/e492f1596937ab6e. Report an issue: GitHub.