import { withSentryConfig } from "@sentry/nextjs"; import type { NextConfig } from "next"; import { withSerwist } from "@serwist/turbopack"; /** * Next.js 16 临时绕过 `/_global-error` prerender 的 workStore bug * 标记根 layout 不参与静态预渲染(global-error 会在请求时渲染) * https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config * * 默认部署模型:`.next/` + `public/` + `next start`(或 Vercel 零配置) * - `pnpm build` 产出 .next/(含 build manifest / chunks / 路由表 / 静态预渲染) * - 脚本侧:scripts/deploy/_deploy_lib.sh 同步 .next/ + public/ * - 服务器启动:`cd && next start -H 0.0.0.0 -p 3000` * 或用 PM2:`pm2 start "next start" --name cozsweet` */ const nextConfig: NextConfig = { experimental: { // 关闭静态优化以规避 16.2.7 global-error prerender bug staticGenerationRetryCount: 0, }, images: { remotePatterns: [ { protocol: "https", hostname: "platform-lookaside.fbsbx.com", }, { protocol: "https", hostname: "graph.facebook.com", }, { protocol: "https", hostname: "**.supabase.co", pathname: "/storage/v1/object/public/**", }, { protocol: "https", hostname: "free.picui.cn", }, ], }, }; const shouldUploadSentrySourcemaps = process.env.CI !== "true" || process.env.SENTRY_UPLOAD_SOURCEMAPS === "1"; export default withSentryConfig(withSerwist(nextConfig), { // For all available options, see: // https://www.npmjs.com/package/@sentry/webpack-plugin#options org: "shenzhen-banlv-zhidao-technolo", project: "javascript-nextjs", // Only print logs for uploading source maps in CI silent: !process.env.CI, // Keep build metadata local; application errors/performance are configured separately. telemetry: false, // For all available options, see: // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, // PR/branch CI should validate builds without uploading source maps. Release jobs can // set SENTRY_UPLOAD_SOURCEMAPS=1 to enable uploads explicitly. sourcemaps: { disable: !shouldUploadSentrySourcemaps, }, // Uncomment to route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. // This can increase your server load as well as your hosting bill. // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- // side errors will fail. // tunnelRoute: "/monitoring", webpack: { // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) // See the following for more information: // https://docs.sentry.io/product/crons/ // https://vercel.com/docs/cron-jobs automaticVercelMonitors: true, // Tree-shaking options for reducing bundle size treeshake: { // Automatically tree-shake Sentry logger statements to reduce bundle size removeDebugLogging: true, }, }, });