Maison  >  Questions et réponses  >  le corps du texte

Comment ignorer tout le dossier dans la méthode Next.js dans l'application ?

Pendant les 13 prochains jours, le dossier app/api générera une erreur lors du processus de construction lorsque nextConfig.output est "export".

Dans mon projet, j'ai besoin de différents types de build basés sur des variables d'environnement.

Existe-t-il un moyen d'ignorer le dossier « api » pendant le processus de construction lorsque « sortie » est « export » ?

Lorsque j'exécute la build en utilisant nextConfig.output comme "export", j'obtiens l'erreur suivante :

L'export a rencontré une erreur sur le chemin suivant : /api/revalidate/route : /api/revalidate

fichier 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() });
}

Suivant.config.js

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

module.exports = nextConfig;

Dépôt copiable

Voici le référentiel pour reproduire cette erreur https://github.com/zeckaissue/next-export-api-crash

P粉682987577P粉682987577294 Il y a quelques jours494

répondre à tous(2)je répondrai

  • P粉662361740

    P粉6623617402023-12-31 10:31:51

    Vous pouvez utiliser l'option ignorer dans le fichier de configuration Next.js (next.config.js). Vous devez créer un fichier de configuration si ce n'est pas déjà fait. Ouvrez le fichier next.config.js et ajoutez le code suivant :

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

    répondre
    0
  • P粉321584263

    P粉3215842632023-12-31 00:13:46

    J'ai trouvé une solution pour ignore-loader. Mais il existe peut-être un meilleur moyen d'atteindre mon objectif via la fonctionnalité intégrée de next.js

    Voici mon next.config.js mis à jour

    /** @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;
    
    

    répondre
    0
  • Annulerrépondre