TypeScript MERN应用部署Vercel遇Express服务构建问题求助
解决Vercel部署TypeScript Express后端的问题
核心问题分析
你遇到的问题主要是TypeScript编译路径错误和Vercel配置未正确指向编译后的文件,同时vercel.json的builds配置覆盖项目设置导致警告(该警告不影响功能,配置正确后可忽略)。
步骤1:修正package.json脚本
你的start脚本路径错误,tsc编译后文件会输出到build目录(需确保tsconfig配置正确),修改如下:
"scripts": { "build": "tsc", "start": "node build/index.js", // 修正路径:指向编译后的index.js "dev": "nodemon --watch \"src/**\" --ext \"ts,json\" --exec \"ts-node src/index.ts\"" }
步骤2:确保tsconfig.json配置正确
如果还没有tsconfig.json或配置有误,添加/修改关键配置,保证TypeScript编译后输出到build目录:
{ "compilerOptions": { "outDir": "./build", // 指定编译输出目录 "rootDir": "./src", // 指定源码根目录 "target": "ES6", "module": "CommonJS", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"], // 包含所有src下的文件 "exclude": ["node_modules"] }
步骤3:修正vercel.json配置
当前vercel.json指向未编译的源码文件且未触发TypeScript编译,修改为:
{ "version": 2, "builds": [ { "src": "package.json", "use": "@vercel/node", "config": { "buildCommand": "npm run build" // 让Vercel执行TypeScript编译命令 } } ], "routes": [ { "src": "/(.*)", "dest": "/build/index.js" // 指向编译后的后端入口文件 } ] }
额外说明
- 本地测试:部署前先执行
npm run build,再执行npm start,确认后端能正常运行后再推送到Vercel。 - 关于警告:因vercel.json定义了
builds,Vercel项目设置里的构建配置会被忽略,属于正常现象,无需额外处理。
内容的提问来源于stack exchange,提问作者coding beast
相关产品推荐
相关产品推荐

