Maison > Questions et réponses > le corps du texte
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
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() }); }
/** @type {import('next').NextConfig} */ const nextConfig = { output: process.env.NEXT_OUTPUT_MODE, }; module.exports = nextConfig;
Voici le référentiel pour reproduire cette erreur https://github.com/zeckaissue/next-export-api-crash
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', }); }
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;