如何解决在Express
我有一个小型快递应用程序,它由服务器,一些视图和路由器组成。这是我的server.js:
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet.contentSecurityPolicy({ directives: { defaultSrc: ["'self'"],scriptSrc: ["'self'",'maxcdn.bootstrapcdn.com','ajax.googleapis.com'],styleSrc: ["'self'",'maxcdn.bootstrapcdn.com'],imgSrc: ["'self'",'image.tmdb.org'] } }));
const path = require('path');
const bp = require('body-parser');
const routes = require('./routes/index');
app.set('view engine','ejs');
app.set('views',path.join(__dirname,'views'));
app.set(express.json());
app.set(bp.urlencoded({extended: false}));
app.set(bp.json())
app.use(express.static(path.join(__dirname,'public')));
app.use('/',routes);
app.listen(3000,() => {
console.log('Servidor online');
})
这是我的router.js:
const express = require('express');
const request = require('request');
const router = express.Router();
router.post('/search',(req,res,next) => {
console.log(req.body);
res.send('sanity check');
});
module.exports = router;
这是视图(它是导航栏中的一种形式):
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="/">The New IMDB</a>
</div>
<ul class="nav navbar-nav">
<li><a href="/login">Login</a></li>
<li><a href="/favorites">Favorites</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<form action="/search?source=hp" method="POST" id="search-form" class="form-inline">
<div class="form-group">
<select name="categ" class="form-control" id="cat">
<option value="movie">Movie Title</option>
<option value="person">Actor</option>
</select>
</div>
<input type="text" id="movie" placeholder="Search" name="movieSearchq" />
<input type="submit" class="btn btn-primary" />
</form>
</li>
</ul>
</div>
</nav>
我搜索了先前的问题,发现bodyParser不再与express一起提供,因此我已经安装了它,但是它仍然没有在req内创建body对象。我在这里想念东西吗?
解决方法
由于您使用的是body-parser
,所以您错误地设置了app.set
来解析表单数据(仅用于设置应用express settings)。
相反,您需要使用app.use
来设置middlewares:
app.use(bp.urlencoded({extended: false}));
app.use(bp.json());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。