Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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 Node.js、express、html表单req.body未定义_Javascript_Html_Node.js_Forms - Fatal编程技术网

Javascript Node.js、express、html表单req.body未定义

Javascript Node.js、express、html表单req.body未定义,javascript,html,node.js,forms,Javascript,Html,Node.js,Forms,我不明白为什么req.body没有定义。它总是访问node.js服务器'/formstuff'中的函数,但req.body未定义 当我查看它发布到cmd的结果时,我在任何地方都看不到我的查询。实际上,res.query和res.params是空的 任何帮助都将不胜感激,谢谢 快递: var express = require('express'), app = express(); var fs = require('fs'); var Promise = require('promise')

我不明白为什么req.body没有定义。它总是访问node.js服务器'/formstuff'中的函数,但req.body未定义

当我查看它发布到cmd的结果时,我在任何地方都看不到我的查询。实际上,res.query和res.params是空的

任何帮助都将不胜感激,谢谢

快递:

var express = require('express'),
app = express();
var fs = require('fs'); 
var Promise = require('promise');



// Handle Get Request
app.get('/', function(req, res){
// get stuff from request
var index;

fs.readFile('./form.html', function (err, data) {
if (err) {
    throw err;
}
    index = data;

    res.setHeader("Content-Type", "text/html");
    res.send(index);

});

});


app.post('/formstuff', function(req, res){
    console.log(req.body);

    res.send();
});
HTML:


身体
{
保证金:0;
}
#头
{   
宽度:100%;
颜色:#FAFAFA;
高度:170px;
文本阴影:2px2px0pxRGBA(1501501501);
背景:#39d800;/*旧浏览器*/
背景:-moz线性梯度(顶部,#39d800 0%,#00a008 100%);/*FF3.6+*/
背景:-webkit渐变(线性、左上、左下、色挡(0%,#39d800)、色挡(100%,#00a008));/*铬、Safari4+*/
背景:-webkit线性梯度(顶部,#39d800 0%,#00a008 100%);/*Chrome10+,Safari5.1+*/
背景:-o型线性梯度(顶部,#39d800 0%,#00a008 100%);/*Opera 11.10+*/
背景:-ms线性梯度(顶部,#39d800 0%,#00a008 100%);/*IE10+*/
背景:线性梯度(至底部,#39d800 0%,#00a008 100%);/*W3C*/
过滤器:progid:DXImageTransform.Microsoft.gradient(startColorstr='#39d800',endColorstr='#00a008',GradientType=0);/*IE6-9*/
字体系列:笔刷脚本MT;
字体大小:粗体;
字号:8.5em;
文本对齐:居中;
}
表格组
{
填充:0.8%;
}
字段集
{
字号:2em;
位置:相对位置;
}
输入
{
宽度:150px;
高度:50px;
字体大小:1.2米;
明确:两者皆有;
}
通知

搜寻
您缺少正文分析中间件


如果您不上传文件,您可以只
npm安装body parser
,然后添加
app.use(require('body-parser').urlencoded())在任何路线之前。

您还需要一些包裹。我建议:

var connect    =require('connect'); //
var multer     =require('multer'); // This is used when multipart/form-data are required
app.use(connect.json()); // for json
app.use(connect.urlencoded()); // for application/x-www-form-urlencoded
app.use(multer({ dest: './uploads/'}));// for multipart/form-data 

这比
主体解析器更可取,后者如前所述不安全。请参阅和

安装后,它会抛出错误,表示找不到模块“主体解析器”。我检查了,安装后它确实存在于node modules文件夹中。适用于各种版本的Express(例如3.x on up)。确保您遵循了此处的示例:作为不使用
主体解析器的原因提供的链接不再有效。该链接描述了与Express捆绑在一起的Express 3
bodyParser
中间件,该中间件同时执行URLCoded和multipart。express4的单独
主体解析器
模块不支持多部分,只支持urlencoded和JSON。
var connect    =require('connect'); //
var multer     =require('multer'); // This is used when multipart/form-data are required
app.use(connect.json()); // for json
app.use(connect.urlencoded()); // for application/x-www-form-urlencoded
app.use(multer({ dest: './uploads/'}));// for multipart/form-data