我在部署全栈顶石时遇到了一些问题。我将两端分别部署到 Vercel 和 Heroku。我在本地运行它时没有任何问题。当我注册一个已部署的用户时,它会执行 POST 并将该用户创建到数据库,但是当我使用该用户登录时,我收到以下 CORS 错误:
从源“https://mind-your-fitness.vercel.app”访问“https://desolate-reaches-15214.herokuapp.com/api/auth/login”已被 CORS 阻止策略:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。 auth-api-service.js:48 POST https://desolate-reaches-15214.herokuapp.com/api/auth/login net::ERR_FAILED
这是来自后端的我的 App.js。我不确定你们还需要什么帮助:
require("dotenv").config();
const express = require("express");
const morgan = require("morgan");
const cors = require("cors");
const { CLIENT_ORIGIN } = require("./config");
const helmet = require("helmet");
const { NODE_ENV } = require("./config");
const workoutsRouter = require("./workouts/workouts-router");
const usersRouter = require("./users/users-router");
const authRouter = require("./authentication/auth-router");
const app = express();
const morganOption = NODE_ENV === "production" ? "tiny" : "common";
app.use(express.json());
app.use(morgan(morganOption));
app.use(cors());
app.use(helmet());
app.use("/api/auth", authRouter);
app.use("/api/users", usersRouter);
app.use("/api/workouts", workoutsRouter);
app.use(function errorHandler(error, req, res, next) {
let response;
if (NODE_ENV === "production") {
response = { error: { message: "server error" } };
} else {
console.error(error);
response = { message: error.message, error };
}
res.status(500).json(response);
});
module.exports = app;