Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Axios w/React发布到express后端时遇到问题_Javascript_Node.js_Reactjs_Axios_Next.js - Fatal编程技术网

Javascript 使用Axios w/React发布到express后端时遇到问题

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

我正在使用React和Nextjs,在端口3001上运行一个快速后端

我正试图让我的注册页面将信息发布到数据库中, 但是我得到了一系列的错误

编辑-修复了CORS问题,仍有问题发布到DB

编辑-这是新的错误:

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://"