Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 无法访问req.body,即使在使用body解析器时也是如此_Javascript_Node.js_Express - Fatal编程技术网

Javascript 无法访问req.body,即使在使用body解析器时也是如此

Javascript 无法访问req.body,即使在使用body解析器时也是如此,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试启动并运行登录功能,但无法访问req.body对象 当我第一次遇到这个问题时,post路由甚至没有被触发(console.log根本没有显示在终端中),请求最终会超时。在主体解析器初始化中添加这一行后,此操作停止: type: 'x-www-form-urlencoded', 现在,终端中显示路由的console.log表单,但两个参数都为空 路由器.js const express = require('express'), router = express.Router

我正在尝试启动并运行登录功能,但无法访问req.body对象

当我第一次遇到这个问题时,post路由甚至没有被触发(console.log根本没有显示在终端中),请求最终会超时。在主体解析器初始化中添加这一行后,此操作停止:

 type: 'x-www-form-urlencoded',
现在,终端中显示路由的console.log表单,但两个参数都为空

路由器.js

const express = require('express'),
    router = express.Router();

router.post('/signup', function (req, res) {
    console.log(req.body.name, req.body.password);
    res.send('posted');
});

module.exports = router;
app.js

const express = require('express'),
    app = express(),
    bodyParser = require('body-parser'),
    cookieParser = require('cookie-parser'),
    session = require('express-session'),
    http_port = process.env.HTTP_PORT;

const http = require('http').createServer(app);
app.use(express.static(path.join(__dirname, 'public')));
app.use(
    express.urlencoded({
        type: 'x-www-form-urlencoded',
        extended: true,
    })
);
app.use(express.json());
app.use(cookieParser());
app.use(require('./backend/router'));
http.listen(process.env.PORT || http_port, () =>
    console.log(`App listening on port ${http_port}`)
);
表单from index.html

                      <div>
                        <form method="POST" enctype="application/x-www-form-urlencoded">
                            <div class="row">
                                <label>Full Name</label>
                                <input
                                    name="name"
                                    type="text"
                                    required
                                    placeholder="Enter your name"
                                />
                            </div>
                            <div class="row">
                                <label>Email</label>
                                <input
                                    name="email"
                                    type="email"
                                    required
                                    placeholder="Enter your email"
                                />
                            </div>
                            <div class="row">
                                <label>Password</label>
                                <input
                                    name="password"
                                    type="password"
                                    required
                                    placeholder="Enter your password"
                                />
                            </div>
                            <div class="row">
                                <label>Confirm Password</label>
                                <input
                                    name="password_confirm"
                                    type="password"
                                    required
                                    placeholder="Confirm your password"
                                />
                            </div>
                            <div id="button" class="row">
                                <button
                                    formmethod="POST"
                                    formenctype="application/x-www-form-urlencoded"
                                    type="submit"
                                >
                                    Sign Up
                                </button>
                            </div>
                        </form>
                    </div>

全名
电子邮件
密码
确认密码
注册

删除
在解析器中键入:“x-www-form-urlencoded”
,然后添加
操作=”http://localhost:3000/signup“
到您的表单

也许可以试试
app.use(bodyParser.json())
而不是

app.use(express.json())

我无法修复它,但我设法找到了解决方法。表单中的信息也在request.fields中,因此我将使用它而不是request.body。我仍然想知道为什么它不能正常工作。

您能确保在“网络”选项卡中发送请求时包含必要的数据吗?我已检查,并且在请求中,在“表单数据”下,我尝试发送的每个值都存在缺失操作。请尝试此操作。用你的服务器url替换它。我以前试过,现在做了另一个测试,但它不起作用…这没有什么区别不幸的是,这使得现在无法访问路由。如果类型:x-www-form-urlencoded被删除,则不会触发路由