Comment ignorer tout le dossier dans la méthode Next.js dans l'application ?
P粉682987577
P粉682987577 2023-12-30 18:49:17
0
2
525

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粉682987577
P粉682987577

répondre à tous(2)
P粉662361740

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',
      });
}
P粉321584263

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;

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal