Heim  >  Fragen und Antworten  >  Hauptteil

API wurde in der Vercel-Bereitstellung nicht gefunden

Ich habe meine Webanwendung mit Github auf Vercel bereitgestellt. Das Frontend ist geladen, aber API-Anfragen vom Frontend werden mit 404 nicht gefunden. Das ist übrigens eine MERN-App Das ist mein vercel.json

{
    "buildCommand": "cd client && npm install && ./node_modules/vite/bin/vite.js build",
    "outputDirectory": "client/dist",
    "framework": "vite",
    "rewrites": [
        {
            "source": "/api/(.*)",
            "destination": "/index.js"
        }
    ]
}

Das ist index.js

const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const cookieParser = require('cookie-parser');
const router = require('./router/router');
const setupCronJob = require('./cron');
const fs = require('fs');
require('dotenv').config();

const app = express();
app.use(express.json());
app.use(cookieParser());    // for reading cookies
const allowedOrigins = ['http://127.0.0.1:5173','https://cozy-stay.vercel.app'];
const corsOptions = {
    credentials: true,
    origin: allowedOrigins,
    methods: 'GET, POST, PUT, DELETE',
    allowedHeaders: 'Content-Type, Authorization, Cookie'
};

app.use(cors(corsOptions));

const port = process.env.PORT || 4000;

mongoose.set("strictQuery", false);

mongoose.connect(process.env.MONGO_URL, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    serverSelectionTimeoutMS: 10000,
}).then(()=> {
    console.log('Connected to database')
}).catch(err=>{
    throw err;
})
setupCronJob();
app.use('/api',router);
app.listen(port);

Dies ist das Verzeichnis img

Das Frontend ist bereits verfügbar, aber die API funktioniert nicht richtig. Ich denke, die API ist noch nicht geladen. Bitte hilf mir

P粉495955986P粉495955986286 Tage vor388

Antworte allen(1)Ich werde antworten

  • P粉541551230

    P粉5415512302024-01-30 00:48:05

    目前发生的情况似乎是 https://cozy-stay.vercel.app/api 路径请求转到前端服务器,而不是您期望的后端服务器:

    Request URL: https://cozy-stay.vercel.app/api/all-places
    Request Method: GET
    Status Code: 404 
    Remote Address: 76.76.21.9:443
    Referrer Policy: strict-origin-when-cross-origin

    修复01

    您可以为前端和后端使用两个 vercel 应用程序:

    • cozy-stay.vercel.app
    • cozy-stay-backend.vercel.app - 将此用作前端应用程序中的后端服务器主机。

    修复02

    您可以运行负载均衡器,将所有带有 /api 前缀的请求发送到后端,将其他请求发送到前端。 IDK vercel 平台支持此功能。

    Antwort
    0
  • StornierenAntwort