固定 : getFileExtension 返回原始 URL 路径,而不是对没有文件扩展名的 URL 无效
作者: cax6505创建于 2026年7月31日更新于 2026年8月19日
描述
在 @dub/utils 中,getFileExtension(url) 帮助函数在给定不包含文件扩展名的 URL 时,错误地返回完整的 URL 路径名(例如 /AVATAR 或 /API/V1/USERS)。
重现
import { getFileExtension } from "@dub/utils";
console.log(getFileExtension("https://dub.co/avatar"));
// 输出: "/AVATAR" (预期: null)
console.log(getFileExtension("https://dub.co/api/v1/users"));
// 输出: "/API/V1/USERS" (预期: null) 原因
在 packages/utils/src/functions/urls.ts 中:
export const getFileExtension = (url: string): string | null => {
try {
const pathname = new URL(url).pathname;
const extension = pathname.split(".").pop(); // 当 pathname 不包含"."时,返回整个 pathname
return extension ? extension.toUpperCase() : null;
} catch { ... }
};当 pathname 不包含点(.)时,pathname.split(".") 返回 ["/avatar"]。调用 .pop() 返回 /avatar,这是真值,因此返回 /AVATAR。
内容来源: dubinc/dub