Javascript 使用Axios w/React发布到express后端时遇到问题
我正在使用React和Nextjs,在端口3001上运行一个快速后端 我正试图让我的注册页面将信息发布到数据库中, 但是我得到了一系列的错误 编辑-修复了CORS问题,仍有问题发布到DB 编辑-这是新的错误:Javascript 使用Axios w/React发布到express后端时遇到问题,javascript,node.js,reactjs,axios,next.js,Javascript,Node.js,Reactjs,Axios,Next.js,我正在使用React和Nextjs,在端口3001上运行一个快速后端 我正试图让我的注册页面将信息发布到数据库中, 但是我得到了一系列的错误 编辑-修复了CORS问题,仍有问题发布到DB 编辑-这是新的错误: POST http://localhost:3001/users/signup 404 (Not Found) 此未捕获的承诺错误: createError.js:16 Uncaught (in promise) Error: Network Error at createErr
POST http://localhost:3001/users/signup 404 (Not Found)
此未捕获的承诺错误:
createError.js:16 Uncaught (in promise) Error: Network Error
at createError (createError.js:16)
at XMLHttpRequest.handleError (xhr.js:83)
我以为问题出在axios post上,但我不确定。
因为我已经启用了Cors,而且在axios选项的标题中,我不确定问题出在哪里
后端:
app.js:
const express = require("express");
const app = express();
const cors = require("cors");
const bodyParser = require("body-parser");
const logger = require("morgan");
const session = require("express-session");
const FileStore = require("session-file-store")(session);
const upload = require("express-fileupload");
app.use(upload());
console.log("Server Started!");
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept"
);
next();
});
app.use(logger("dev"));
app.use(cors);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(
session({
resave: false,
secret: "hello",
saveUninitialized: true,
is_logged_in: false,
})
);
const indexRouter = require("./routes/index");
app.use("/", indexRouter);
app.get('/', function (req, res) {
res.send('<h1>hello world</h1>')
});
module.exports = app;
}
cors
是一个工厂函数,调用该函数时返回Express middleware函数,该函数设置所需的cors头,以允许传入的跨源请求
app.use(cors()); // instead of app.use(cors)
此外,在axios
中,您必须在端点URL前面加上协议部分
.post("http://localhost:3001/users/signup") // you were missing "http://"
删除自定义CORS中间件(实际使用
CORS
模块之前的代码)并应用我的更改。它应该会起作用。无论如何,您缺少访问控制允许凭据,这就是您的请求失败的原因。将其更改为您所说的内容,但没有任何更改仍然是相同的错误。删除了我的第一条评论,因为我误读了您所说的内容,但后来我回去按你说的做了,并删除了自定义标题。我还发现了另一个错误-你的帖子URL不正确,因为它不包括协议部分。你的URL:localhost:3001/users/signup
,预期URL:http://localhost:3001/users/signup
。缺少的部分是“http://”,它向浏览器指示请求正在使用http协议。在您的axios.post
中,将http://
添加到url。更新的post可立即修复问题我们需要查看处理请求的路由routes/index.js
。(您可以删除SignUp.jsx)
app.use(cors()); // instead of app.use(cors)
.post("http://localhost:3001/users/signup") // you were missing "http://"