我编写了一个类似于教程中解释的代码,但它不起作用。描述中包含的错误 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(“服务器已启动”);
});
您的代码是正确的,只需要添加中间件,发布我的答案,它可以工作:)