首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >node.js & express: req.body未定义

node.js & express: req.body未定义
EN

Stack Overflow用户
提问于 2018-05-28 23:39:36
回答 4查看 9.1K关注 0票数 3

我目前正在使用express设计一个简单的浏览器应用程序。我正在尝试提取用户在下拉菜单中选择的值。我还为每个选项指定了一个单独的值,并将表单的方法声明为/post。但当我尝试通过进入req.body来选择哪个值时,该值是未定义的。

我认识到问题可能出在正文解析器无法浏览类似的问题(ExampleExample1),但这些问题的解决方案并不能阻止req.body的未定义。

下面是我构建应用程序的代码

代码语言:javascript
复制
const app = express()
app.use(express.static(__dirname, ''));
app.engine('html', require('ejs').renderFile);
app.set('views', __dirname + '/public/views');
app.use(express.urlencoded());
app.set('view engine', 'html');
const server = http.createServer(app);

下面是处理帖子的代码

代码语言:javascript
复制
app.get('/detailed', function(req,res){
    res.send(displayDetailed(results, req));
});
app.post('/detailed', function(req,res){
    res.send('Hello world');
    console.log(req.body);

});

当我在localhost:8080/detailed中发布一些内容时,hello world返回得很好,但是req.body是一个空的(返回为{})。displayDetailed函数是一个自定义函数,它返回一个html字符串,该字符串包含从google sheets API的get请求中提取的值。由于我不是在处理已保存的html文档,这会影响进程吗?

EN

回答 4

Stack Overflow用户

发布于 2020-01-30 16:16:33

大多数情况下,由于缺少req.body解析器,JSON是未定义的

代码语言:javascript
复制
const express = require('express');
app.use(express.json());

可能缺少正文解析器

代码语言:javascript
复制
const bodyParser  = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));

有时,由于cros的起源,它是未定义的,所以添加它们

代码语言:javascript
复制
const cors = require('cors');
app.use(cors())
票数 6
EN

Stack Overflow用户

发布于 2018-05-28 23:48:06

您是否为express设置了正文解析器以供使用?您可以只安装npm的body-parser,然后将它们放入您的代码中。

代码语言:javascript
复制
const bodyParser = require('body-parser')
app.use(bodyParser.json())

希望这能有所帮助!

票数 4
EN

Stack Overflow用户

发布于 2018-05-29 09:00:49

当在异步函数(构造html的函数被调用的地方)外调用req.body时,req.body返回得非常好。我将修改我的项目来解决这个问题。我应该把这个放在原来的问题中,但当我写这个问题的时候,它似乎并不相关。感谢每一个回复的人

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50569718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档