无法在 Express 中 POST /api/upload

问题描述 投票:0回答:1

我尝试使用 React 和 Express 进行表单处理程序,得到了这个答案: 404 错误 无法 POST /api/upload 你能告诉我如何解决这个问题吗? 这是我的前端和后端代码: 前端:

const emailSchema = yup.object().shape({
        email: yup.string().required("Ви не вказали e-mail адресу").email("Неправильна e-mail адреса"),
    });
    const {
        values,
        errors,
        touched,
        handleBlur,
        handleChange,
        handleSubmit,
        handleReset
    } = useFormik({
        initialValues: {
            email: "",
        },
        validationSchema: emailSchema,
        onSubmit: async () => {
            setSubscribeActive(true);
            await sub(values);
            handleReset(values);
        },
    });

    const [subscribeActive, setSubscribeActive] = useState(false);
    const sub = async ({email}) => {
        try {
            const response = await axios.post("http://localhost:3000/api/upload", {
               email,
            })
            return response.data;
        } catch (e) {
            console.log(e);
        }
    };

后端:

const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
const Post = require("./Post");

const DB_URL = `mongodb+srv://kostjn04e:[email protected]/`;
const PORT = 3000;

const app = express();
app.use(cors());

const corsOptions = {
    origin: "http://localhost:3000",
    optionSuccessStatus: 200, // для старых браузеров и SmartTV
};

app.use(express.json());
app.post("/api/upload", cors(corsOptions), async (req, res) => {
    try {
        const {email} = req.body;
        const post = await Post.create(email);
        res.status(200).json(post);
    } catch (e) {
        res.status(500).json(e);
    }
});


async function startApp() {
    try {
        await mongoose.connect(DB_URL);
        console.log("Connection successful");
        app.listen(PORT, () => console.log("Server started on port " + PORT));
    } catch (e) {
        console.log(e);
    }
}

startApp();


我尝试更改对“/”、“/subscribe”等的引用,但我仍然遇到相同的错误。 我还尝试更改我的域并在我的节点js文件中设置cors

node.js express http-post
1个回答
-1
投票
 Change your backend port to 5000 instead of 3000 and then try :

     const express = require("express");
    const mongoose = require("mongoose");
    const cors = require("cors");
    const Post = require("./Post");
    
    const DB_URL = `mongodb+srv://kostjn04e:[email protected]/`;
    const PORT = 5000;
    
    const app = express();
    app.use(cors());
    
    const corsOptions = {
        origin: "http://localhost:3000",
        optionSuccessStatus: 200, // для старых браузеров и SmartTV
    };
    
    app.use(express.json());
    app.post("/api/upload", cors(corsOptions), async (req, res) => {
        try {
            const {email} = req.body;
            const post = await Post.create(email);
            res.status(200).json(post);
        } catch (e) {
            res.status(500).json(e);
        }
    });

In frontend :

 try {
        const response = await axios.post("http://localhost:5000/api/upload", {
           email,
        })
        return response.data;
    } catch (e) {
        console.log(e);
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.