Vercel部署修改maxDuration无效,函数配置无法识别路由
Express+TypeScript后端部署Vercel配置maxDuration问题解决
问题背景
将Express+TypeScript后端部署到Vercel,需要把函数maxDuration调整为30秒。原builds配置不支持该参数,改用functions配置后,Vercel无法识别函数,抛出错误:
functions中定义的模式"api/index.js"在api目录下找不到任何无服务器函数。
编译后的文件输出到dist目录,主入口为dist/api/index.js,对应源码src/api/index.ts。
正确配置方案
修改vercel.json,将functions的路径指向编译后的实际文件,同时保留原有可正常运行的builds和routes配置:
{ "version": 2, "buildCommand": "npm run build", "installCommand": "npm install", "builds": [ { "src": "dist/api/index.js", "use": "@vercel/node", "config": { "includeFiles": ["dist/**"] } } ], "routes": [ { "src": "/(.*)", "dest": "dist/api/index.js" } ], "functions": { "dist/api/index.js": { "maxDuration": 30 } } }
配置说明
functions字段的路径必须对应项目根目录下的实际文件位置,这里是dist/api/index.js,而非源码目录的路径- 保留
builds配置确保Vercel正确识别Node.js函数编译入口,并包含所有dist目录下的依赖文件 routes配置确保所有请求都转发到编译后的Express入口文件maxDuration直接在functions对应的文件配置中设置为30秒
额外检查项
- 确认
tsconfig.json中的outDir设置为"dist",保证编译产物路径正确 - 本地执行
npm run build,检查dist/api/index.js是否生成 - 确保
dist目录已被Git提交(项目pre-commit钩子已包含add-build步骤,可自动完成)
内容的提问来源于stack exchange,提问作者Khosraw Azizi
相关产品推荐
相关产品推荐

