我已经使用 github 在 vercel 上部署了我的 Web 应用程序。前端已加载,但前端发出的 api 请求未找到 404。顺便说一句,这是一个 MERN 应用程序 这是我的 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" } ] }
这是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 无法正常工作,我认为 api 尚未加载。请帮我
目前发生的情况似乎是
https://cozy-stay.vercel.app/api
路径请求转到前端服务器,而不是您期望的后端服务器:修复01
您可以为前端和后端使用两个 vercel 应用程序:
修复02
您可以运行负载均衡器,将所有带有
/api
前缀的请求发送到后端,将其他请求发送到前端。 IDK vercel 平台支持此功能。