Node API本地运行正常 部署到Vercel提示Serverless Function崩溃如何解决
修复步骤
1. 调整入口文件适配Vercel规范
Vercel无服务器函数不支持直接监听端口启动服务,需要导出express实例供平台调用,修改index.js末尾代码:
把原有代码:
const PORT = 5001; app.listen(PORT, () => console.log("API is running."))
替换为:
// 仅本地开发环境启动端口监听 if (process.env.NODE_ENV === 'development') { const PORT = 5001; app.listen(PORT, () => console.log("API is running.")) } // 导出实例供Vercel调用 module.exports = app
同时建议给Mongoose连接添加超时配置,避免冷启动时连接超时崩溃:
mongoose.connect(dbConfig, { serverSelectionTimeoutMS: 5000 })
2. 新增Vercel配置文件
在项目根目录新建vercel.json文件,配置路由转发规则:
{ "version": 2, "builds": [ { "src": "index.js", "use": "@vercel/node" } ], "routes": [ { "src": "/(.*)", "dest": "/index.js" } ] }
3. 修正package.json启动脚本
Vercel线上部署默认执行npm start,你当前的start命令是本地开发专用的,调整为:
"scripts": { "start": "node index.js", "dev": "vercel dev", "deploy": "vercel deploy --prod" }
4. 补全线上环境变量
你用到的config包、dotenv依赖的配置,本地的.env文件和config目录下的配置不会默认同步到Vercel,需要手动在Vercel项目控制台的「环境变量」页面添加所有需要的配置项,包括数据库连接地址等敏感参数。如果不想提交config目录到代码仓库,建议把所有配置项都改为直接从process.env读取。
5. 查看运行日志定位问题
如果修改后仍然报错,可以在Vercel控制台的「函数日志」页面查看具体的运行时报错信息,即可精准定位问题根源。
内容的提问来源于stack exchange,提问作者recabos710
相关产品推荐
相关产品推荐

