Wie ignoriere ich den gesamten Ordner in der Next.js-Methode in der Anwendung?
P粉682987577
P粉682987577 2023-12-30 18:49:17
0
2
589

In den nächsten 13 Tagen generiert der Ordner „app/api“ während des Erstellungsprozesses einen Fehler, wenn nextConfig.output „export“ lautet.

In meinem Projekt benötige ich verschiedene Build-Typen basierend auf Umgebungsvariablen.

Gibt es eine Möglichkeit, den Ordner „api“ während des Erstellungsprozesses zu ignorieren, wenn „Ausgabe“ auf „Export“ gesetzt ist?

Wenn ich den Build mit nextConfig.output als „Export“ ausführe, erhalte ich die folgende Fehlermeldung:

Beim Export ist im folgenden Pfad ein Fehler aufgetreten: /api/revalidate/route: /api/revalidate

src/app/api/revalidate/route.ts-Datei

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;

Kopierbares Repository

Hier ist das Repository, um diesen Fehler zu reproduzieren https://github.com/zeckaissue/next-export-api-crash

P粉682987577
P粉682987577

Antworte allen(2)
P粉662361740

您可以在 Next.js 配置文件 (next.config.js) 中使用忽略选项。 如果您还没有创建一个配置文件,则必须创建一个配置文件。 打开next.config.js文件并添加以下代码:

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

我找到了 ignore-loader 的解决方法。但也许有更好的方法通过 next.js 的内置功能来实现我的目标

这是我更新的 next.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;

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage