Bagaimana untuk mengabaikan keseluruhan folder dalam kaedah Next.js dalam aplikasi?
P粉682987577
P粉682987577 2023-12-30 18:49:17
0
2
529

Untuk 13 hari seterusnya, folder app/api akan menjana ralat semasa proses binaan apabila nextConfig.output ialah "eksport".

Dalam projek saya, saya memerlukan jenis binaan yang berbeza berdasarkan pembolehubah persekitaran.

Adakah terdapat cara untuk mengabaikan folder "api" semasa proses binaan apabila "output" ialah "eksport"?

Apabila saya menjalankan binaan menggunakan nextConfig.output sebagai "eksport" saya mendapat ralat berikut:

Eksport mengalami ralat pada laluan berikut: /api/revalidate/route: /api/revalidate

fail src/app/api/revalidate/route.ts

import { NextRequest, NextResponse } from 'next/server';
import { revalidateTag } from 'next/cache';
 
export async function GET(request: NextRequest) {
  const tag = request.nextUrl.searchParams.get('tag');
  if(tag){
    revalidateTag(tag);
  }
  return NextResponse.json({ revalidated: true, now: Date.now() });
}

Next.config.js

/** @type {import('next').NextConfig} */
const nextConfig = {
  output: process.env.NEXT_OUTPUT_MODE,
};

module.exports = nextConfig;

Repositori Boleh Disalin

Berikut ialah repositori untuk menghasilkan semula ralat ini https://github.com/zeckaissue/next-export-api-crash

P粉682987577
P粉682987577

membalas semua(2)
P粉662361740

Anda boleh menggunakan pilihan abaikan dalam fail konfigurasi Next.js (next.config.js). Anda mesti mencipta fail konfigurasi jika anda belum melakukannya. Buka fail next.config.js dan tambah kod berikut:

module.exports = {
  webpack: (config, { isServer }) => {
    if (!isServer) {
      config.module.rules.push({
        test: /YOUR FOLDER NAME\/.*/,
        loader: 'ignore-loader',
      });
}
P粉321584263

Saya menemui penyelesaian untuk ignore-loader. Tetapi mungkin ada cara yang lebih baik untuk mencapai matlamat saya melalui fungsi terbina dalam next.js

Ini adalah kemas kini saya seterusnya.config.js

/** @type {import('next').NextConfig} */
const nextConfig = {
  output: process.env.NEXT_OUTPUT_MODE,
  /**
   *
   * @param {import('webpack').Configuration} config
   * @param {import('next/dist/server/config-shared').WebpackConfigContext} context
   * @returns {import('webpack').Configuration}
   */
  webpack: (config) => {
    if (process.env.NEXT_OUTPUT_MODE !== "export" || !config.module) {
      return config;
    }
    config.module.rules?.push({
      test: /src\/app\/api/,
      loader: "ignore-loader",
    });
    return config;
  },
};

module.exports = nextConfig;

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan