Javascript API请求在活动时未定义,但在本地主机上工作

Javascript API请求在活动时未定义,但在本地主机上工作,javascript,node.js,express,cors,Javascript,Node.js,Express,Cors,我在尝试运行node.js/express应用程序时遇到问题。 在本地主机上运行时,我传递给路由的数据将被解析,并且我能够成功地使用req.body.message。然而,在我的实时站点上,这只返回未定义的。为什么会这样,我该如何修复它 这是我在本地主机和live服务器上使用的node.js应用程序 const express = require("express"); const cors = require("cors"); const router

我在尝试运行node.js/express应用程序时遇到问题。 在本地主机上运行时,我传递给路由的数据将被解析,并且我能够成功地使用req.body.message。然而,在我的实时站点上,这只返回未定义的。为什么会这样,我该如何修复它

这是我在本地主机和live服务器上使用的node.js应用程序

const express = require("express");
const cors = require("cors");
const router = express.Router();
const app = express();

router.post("/send", (req, res) => {
  res.send(`message is ${req.body.message}`);
});

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use("/", router);
const PORT = 3030;

app.listen(PORT, () => console.log("Server on " + PORT));
如果我用“message”:“hello”,在我的本地主机上,我会得到“messageishello”的响应,但在实时服务器上,我会得到“messageisundefined”

谢谢你的建议,干杯

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

尝试将所有这些中间件放在“/send”API端点之前。还要检查控制台错误,它将为您提供有关错误的更多信息。

我解决了它。调用live api时,需要包含尾部斜杠

例如,
examplewebsite.com/send
将不起作用。但是,
examplewebsite.com/send/
将起作用。


我不知道服务器是如何工作的,但它解决了我的问题。我希望其他有此问题的人都能从我的发现中受益。

重新排列它们并没有改变任何事情,但要感谢中间件的顺序在express中很重要。在跨源平台上,您需要在中间件配置之后定义路由,或者在router.post中传递所需的中间件作为参数。