我编写了一个类似于教程中解释的代码,但它不起作用。描述中包含的错误 let express=require(“express”) 让我们使用ourApp=express() ourApp.get('/',函数(req,res){ res.send( ` 世界上最高的山叫什么名字? 点击这里提交` ) }) ourApp.post('/answer',函数(req,res){ 如果(要求主体正确==“珠穆朗玛峰”) res.send(“这是一个正确的答案”) } ) 我们的应用程序。听(3000)

我编写了一个类似于教程中解释的代码,但它不起作用。描述中包含的错误 let express=require(“express”) 让我们使用ourApp=express() ourApp.get('/',函数(req,res){ res.send( ` 世界上最高的山叫什么名字? 点击这里提交` ) }) ourApp.post('/answer',函数(req,res){ 如果(要求主体正确==“珠穆朗玛峰”) res.send(“这是一个正确的答案”) } ) 我们的应用程序。听(3000),express,Express,错误: TypeError:无法读取未定义的属性“correct”如果正确,您的应用程序需要一个解析器来解析请求正文。 您需要一个中间件程序来解析您的请求体。请在安装主体解析器后重试 安装后,您可以读取req.body,否则express将无法识别您的req.body对象 let express = require("express"); let ourApp = express(); var bodyParser = require("body-parser&qu

错误:


TypeError:无法读取未定义的属性“correct”

如果正确,您的应用程序需要一个解析器来解析请求正文。 您需要一个中间件程序来解析您的请求体。请在安装主体解析器后重试

安装后,您可以读取req.body,否则express将无法识别您的req.body对象

let express = require("express");
let ourApp = express();
var bodyParser = require("body-parser");
ourApp.use(
  bodyParser.urlencoded({
    extended: true,
  })
);
ourApp.use(bodyParser.json());
ourApp.get("/", function (req, res) {
  res.send(
    `
        <form action="/answer" method="POST">
        <h1>What is the name of tallest mountain in the world?</h1>
    <input name="correct">
    <button>Click here to submiit</button>   </form>
    `
  );
});
ourApp.post("/answer", function (req, res) {
  if (req.body.correct.toLowerCase() == "everest") return res.send("<h2> Thats a correct answer </h2>");
  return res.send("<h2> Nope your are wrong </h2>");
});
ourApp.listen(3000);
let express=require(“express”);
让ourApp=express();
var bodyParser=require(“主体解析器”);
我们的应用程序(
bodyParser.urlencoded({
是的,
})
);
use(bodyParser.json());
ourApp.get(“/”,函数(req,res){
res.send(
`
世界上最高的山叫什么名字?
点击这里提交
`
);
});
ourApp.post(“/answer”),函数(请求、回复){
if(req.body.correct.toLowerCase()=“珠穆朗玛峰”)返回res.send(“这是一个正确的答案”);
return res.send(“不,你错了”);
});
我们的应用程序。听(3000);

试试这个代码。ourApp.use()-此应用程序包括body parser中间件,请尝试阅读body parser对您的应用程序所做的小修改:)

原因:-
它不起作用,因为您需要添加一些中间件来解析body的post数据。

ourApp.use(express.json());
    ourApp.use(express.urlencoded());
说明如何解析应用程序以及如何解析POST数据

我的建议

  • 早期版本的Express曾经捆绑了很多中间件。bodyParser是其中一个中间产品。什么时候 Express 4.0发布后,他们决定删除捆绑包 将中间件从Express中分离出来,并将其改为单独的包

  • 然后,语法从app.use(express.json())更改为 安装bodyParser模块后使用(bodyParser.json())

  • bodyParser在4.16.0版中添加回Express,因为 人们希望它像以前一样与Express捆绑在一起。那意味着你 如果您使用的是最新版本,则不必再使用bodyParser.json() 释放。您可以改为使用express.json()

试试这个,这个管用

let express=require("express");
let ourApp = express();
ourApp.use(express.json());
ourApp.use(express.urlencoded());
ourApp.get("/", function (req, res) {
  res.send(
    `<form action="/answer" method="POST">
        <h1>What is the name of tallest mountain in the world?</h1>
        
    <input type="text" name="correct" id='jatin'> 
    <button>Click here to submiit</button>  </form> `
  );
});

ourApp.post("/answer", function (req, res) {
  console.log(req.body);
  if (req.body.correct == "everest") res.send("Thats a correct answer");
});

ourApp.listen(3000, function (req, res) {
  console.log("server started");
});
let express=require(“express”);
让ourApp=express();
使用(express.json());
使用(express.urlencoded());
ourApp.get(“/”,函数(req,res){
res.send(
`
世界上最高的山叫什么名字?
点击这里提交`
);
});
ourApp.post(“/answer”),函数(请求、回复){
控制台日志(请求主体);
如果(req.body.correct==“珠穆朗玛峰”)res.send(“这是一个正确的答案”);
});
我们的应用程序监听(3000,功能(请求,恢复){
log(“服务器已启动”);
});

您的代码是正确的,只需要添加中间件,发布我的答案,它可以工作:)