Express服务本地正常,部署至Vercel/Netlify后无法工作求助
实时聊天应用部署Vercel/Netlify后无法正常运行
问题背景
我开发了一款实时聊天应用,在本地localhost环境下运行完全正常,但部署到Vercel或Netlify后就无法工作。已按照指引在项目根目录创建vercel.json配置文件,部署时也正确添加了所有环境变量,但部署完成后访问始终报错,且Vercel的构建日志里没有任何错误或警告信息。我怀疑问题出在vercel.json中的路径配置"src": "../backend/server.js",因为代码里的模块导入也用了类似的相对路径。
后端文件夹结构
- IMAGE1:后端文件夹结构截图1
- IMAGE2:后端文件夹结构截图2
配置文件代码
vercel.json
{ "version": 2, "builds": [ { "src": "../backend/server.js", "use": "@vercel/node" } ], "routes": [ { "src": "/(.*)", "dest": "/" } ] }
错误情况
部署后的访问地址:https://backend-chat-app-rouge.vercel.app/
访问时出现错误,错误截图:ERROR
核心业务代码
server.js
const PORT = process.env.PORT || 6001; const dotenv = require(`dotenv`); dotenv.config({ path: `./config.env` }); const app = require(`../backend/app`); const mongoose = require(`mongoose`); const DB = process.env.MONGO_URL.replace(`<PASSWORD>`, process.env.PASSWORD); mongoose .connect(DB, {}) .then((con) => { console.log(`DB is connected`); }) .catch((err) => { console.log(err); }); const http = require("http"); const server = http.createServer(app); const io = require("socket.io")(server); io.on("connection", (socket) => { console.log("A client connected"); socket.on("message", (message) => { console.log("Received message:", message); io.emit("message", message); }); }); server.listen(PORT, () => { console.log(`Aplikacija radi na portu broj ${PORT}`); });
app.js
const express = require(`express`); const app = express(); const userRouter = require(`../backend/routes/userRoutes`); const chatRouter = require(`../backend/routes/ChatRoutes`); const messageRouter = require(`../backend/routes/MessageRoutes`); const cors = require(`cors`); const bodyParser = require(`body-parser`); // 中间件 app.use(bodyParser.json()); app.use((err, req, res, next) => { if (err instanceof SyntaxError && err.status === 400 && "body" in err) { res.status(400).json({ status: "failed", message: "Invalid JSON payload" }); } else { next(); } }); app.use( cors({ origin: "*", credentials: true, }) ); // 路由配置 app.use(`/`, userRouter); app.use(`/chat`, chatRouter); app.use(`/messages`, messageRouter); module.exports = app;
内容的提问来源于stack exchange,提问作者Boss Bosser
相关产品推荐
相关产品推荐

