fix: respect LETTERFEED_BACKEND_URL at build time #1

This commit is contained in:
Leon
2025-07-24 18:03:58 +02:00
parent 6ff4e817ef
commit 68254e45f4
6 changed files with 22 additions and 35 deletions

View File

@@ -13,10 +13,6 @@ RUN npm install
# Copy the rest of the application
COPY . .
# Set the API URL for the build
ARG NEXT_PUBLIC_API_URL=/api
ENV NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
# Build the Next.js application
RUN npm run build

View File

@@ -1,18 +1 @@
import '@testing-library/jest-dom';
import fetchMock from 'jest-fetch-mock';
fetchMock.enableMocks();
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: jest.fn().mockImplementation(query => ({
matches: false,
media: query,
onchange: null,
addListener: jest.fn(), // deprecated
removeListener: jest.fn(), // deprecated
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
dispatchEvent: jest.fn(),
})),
});
import '@testing-library/jest-dom'

View File

@@ -1,15 +1,5 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
async rewrites() {
const backendUrl = process.env.LETTERFEED_BACKEND_URL || "http://backend:8000";
return [
{
source: "/api/:path*",
destination: `${backendUrl}/:path*`,
},
];
},
};
const nextConfig: NextConfig = {};
export default nextConfig;

View File

@@ -46,7 +46,7 @@ const mockFetchError = (data: any = {}, statusText = "Bad Request", status = 400
}
describe("API Functions", () => {
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL
const API_BASE_URL = '/api'
beforeEach(() => {
// Reset the mock before each test

View File

@@ -1,4 +1,4 @@
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL;
const API_BASE_URL = '/api';
export interface Sender {
id: string;

View File

@@ -0,0 +1,18 @@
import { NextRequest, NextResponse } from 'next/server';
export function middleware(request: NextRequest) {
const backendUrl = process.env.LETTERFEED_BACKEND_URL || 'http://backend:8000';
if (request.nextUrl.pathname.startsWith('/api/')) {
const url = request.nextUrl.clone();
const path = url.pathname.replace('/api', '');
url.href = `${backendUrl}${path}${url.search}`;
return NextResponse.rewrite(url);
}
return NextResponse.next();
}
export const config = {
matcher: '/api/:path*',
};