我尝试在Vercel上部署我的Express服务器,以解决我的前端代码上的CORS问题
问题是当我进入部署页面时弹出404错误
但当我试穿本地主机时,它运行得很好
// vercel.json
{
"version": 2,
"builds": [
{
"src": "./index.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "/"
}
],
"rewrites": [{ "source": "/api/(.*)", "destination": "/api" }]
}
//index.js
const express = require("express");
const cors = require("cors");
const axios = require("axios");
const app = express();
const PORT = process.env.PORT || 3000;
require("dotenv").config();
let corsOptions = {
origin: ["http://localhost:3000", "https://humanscape-team5a.netlify.app"],
};
app.use(cors(corsOptions));
app.get("/", (req, res) => {
const textQuery = req.query.searchText;
const numOfRowsQuery = req.query.numOfRows;
axios
.get(
"http://apis.data.go.kr/B551182/diseaseInfoService/getDissNameCodeList",
{
params: {
sickType: 1,
medTp: 2,
diseaseType: "SICK_NM",
searchText: textQuery,
ServiceKey: process.env.KEY,
numOfRows: numOfRowsQuery,
_type: "json",
},
}
)
.then(response => res.send(response.data));
});
app.listen(PORT, () => {
console.log(`Server running on ${PORT}`);
});
当它在本地主机上工作时,我猜这是一种Vercel设置问题。有什么想法吗?
2条答案
按热度按时间2hh7jdfx1#
不确定您是否仍在寻找解决方案,但经过一些重要的尝试和错误后,我确实解决了这个问题。
首先,Vercel似乎需要一个包含
index.js
文件的/api
文件夹才能工作。最初,我感到困惑,因为在本地工作时,我的index.js文件也用来启动我的服务器。Vercel基本上是在本地取代您的服务器文件。您仍然应该将它留到本地测试,但在使用Vercel时,您基本上可以忽略它。在您的
/api/index.js
文件中,您将存放您的路线。我的
vercel.json
文件是...不知道这是否有帮助,但这对我很管用。最重要的是将index.js路径文件嵌套在一个API文件夹中。
qgelzfjb2#
文档称node.js应用程序需要项目根目录中的
api/
文件夹。这意味着您的index.js
必须在此文件夹中。**重要提示:**如果您的索引命名为app.js
,则必须将其重命名为index.js
Link说:“要部署无服务器Node.js API,请在项目根目录的/api目录下的.js文件中创建一个函数:”