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
- Select actual files, or folders that contain files, before downloading.
- Open an empty folder in the Netdisk UI and delete it or move files into it first.
- 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
- Don't select empty or file-less folders for download
- Verify folder contents in the Netdisk UI before bulk-selecting
- Ensure your token is valid so folder listing doesn't silently return empty
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.