From e74c7b15e06bc77c2c36fd3fd7a35307691cd0e1 Mon Sep 17 00:00:00 2001 From: mtvpls Date: Fri, 29 May 2026 22:54:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BC=80=E5=8F=91=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- next.config.js | 30 ++++++++++++++++++++++-------- src/lib/utils.ts | 3 ++- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/next.config.js b/next.config.js index fd9dac0..44ed58e 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,8 @@ /** @type {import('next').NextConfig} */ /* eslint-disable @typescript-eslint/no-var-requires */ +const { PHASE_DEVELOPMENT_SERVER } = require('next/constants'); + // 检测是否为 Cloudflare Pages 构建 const isCloudflare = process.env.CF_PAGES === '1' || process.env.BUILD_TARGET === 'cloudflare'; @@ -9,6 +11,9 @@ const optimizedPackageImports = [ '@dnd-kit/modifiers', '@dnd-kit/sortable', '@dnd-kit/utilities', + '@heroicons/react', + 'lucide-react', + 'react-icons', ]; const serverExternalPackages = [ @@ -24,7 +29,10 @@ const serverExternalPackages = [ 'xpath', ]; -const nextConfig = { +const createNextConfig = (phase) => { + const isDevelopment = phase === PHASE_DEVELOPMENT_SERVER || process.env.NODE_ENV === 'development'; + + const nextConfig = { // Cloudflare Pages 不支持 standalone,使用默认输出 output: isCloudflare ? undefined : 'standalone', eslint: { @@ -117,11 +125,17 @@ const nextConfig = { }, }; -const withPWA = require('next-pwa')({ - dest: 'public', - disable: process.env.NODE_ENV === 'development', - register: true, - skipWaiting: true, -}); + if (isDevelopment) { + return nextConfig; + } -module.exports = withPWA(nextConfig); + const withPWA = require('next-pwa')({ + dest: 'public', + register: true, + skipWaiting: true, + }); + + return withPWA(nextConfig); +}; + +module.exports = createNextConfig; diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 3396eda..bfd7920 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,7 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any,no-console */ import bs58 from 'bs58'; import he from 'he'; -import Hls from 'hls.js'; export type DoubanImageProxyType = | 'direct' @@ -509,6 +508,8 @@ export async function getVideoResolutionFromM3u8( bitrate: string; // 视频码率(如 "2.5 Mbps") }> { try { + const { default: Hls } = await import('hls.js'); + // 直接使用m3u8 URL作为视频源,避免CORS问题 return new Promise((resolve, reject) => { const video = document.createElement('video');