У меня есть это в качестве конфигурации моего Express сервера
app.use(app.router);
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat" }));
app.set('view engine', 'ejs');
app.set("view options", { layout: true });
//Handles post requests
app.use(express.bodyParser());
//Handles put requests
app.use(express.methodOverride());
Но все равно, когда я запрашиваю req.body.something
в моих маршрутах, я получаю ошибку, указывающую, что body is undefined
. Вот пример маршрута, который использует req.body
:
app.post('/admin', function(req, res){
console.log(req.body.name);
});
Я читал, что эта проблема вызвана отсутствием app.use(express.bodyParser());
но как вы можете видеть, я вызываю его перед маршрутами.
Есть какие-нибудь подсказки?
Для тех, у кого не работал ни один из приведенных выше ответов, мне приходилось включать cors между своим клиентом и экспрессом.
Это можно сделать одним из следующих способов:
Загрузка и включение расширения CORS для вашего браузера, например:
для Chrome,
или by
Добавление строк
var cors=require('cors');
app.use(cors());
на страницу экспресс app.js
. (После npm install cors
)
В последней версии Express уже есть встроенный анализатор тела. Таким образом, вы можете использовать:
const express = require('express);
...
app.use(express.urlencoded({ extended: false }))
.use(express.json());
добавление express.urlencoded({ extended: true })
к маршруту решает проблему.
router.post('/save',express.urlencoded({ extended: true }), "your route");
в Экспрессе 4, это действительно просто
const app = express()
const p = process.env.PORT || 8082
app.use(express.json())
Большую часть времени req.body не определен из-за пропавших без вести синтаксического анализатора JSON
const express = require('express');
app.use(express.json());
, мог отсутствовать для синтаксического анализатора тела
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
, и иногда это не определено должное пересечь источник, так добавьте их
const cors = require('cors');
app.use(cors())