NodeJS 在vercel部署中未找到API

50few1ms  于 2023-03-08  发布在  Node.js
关注(0)|答案(1)|浏览(4905)

我已经使用github在vercel上部署了我的web应用。前端已经加载,但未找到前端发出的API请求(给出404)。顺便说一下,这是一个MERN应用。

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

下面是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);

下面是目录img

前端已被但API不工作我想i api还没有加载。请帮助我

lymgl2op

lymgl2op1#

目前发生的情况似乎是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前缀的请求发送到后端,把其他的发送到前端。vercel平台支持IDK。

相关问题