Express.js req.body undefined

У меня есть это в качестве конфигурации моего 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()); но как вы можете видеть, я вызываю его перед маршрутами.

Есть какие-нибудь подсказки?

248
задан Rivera 3 August 2015 в 03:06
поделиться

5 ответов

Для тех, у кого не работал ни один из приведенных выше ответов, мне приходилось включать cors между своим клиентом и экспрессом.

Это можно сделать одним из следующих способов:

  1. Загрузка и включение расширения CORS для вашего браузера, например:

    https: //chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

    для Chrome,

или by

  1. Добавление строк

    var cors=require('cors');
    
    app.use(cors());
    

на страницу экспресс app.js. (После npm install cors)

1
ответ дан 23 November 2019 в 02:59
поделиться

В последней версии Express уже есть встроенный анализатор тела. Таким образом, вы можете использовать:

const express = require('express);
... 
app.use(express.urlencoded({ extended: false }))
.use(express.json());
2
ответ дан 23 November 2019 в 02:59
поделиться

добавление express.urlencoded({ extended: true }) к маршруту решает проблему.

router.post('/save',express.urlencoded({ extended: true }),  "your route");
0
ответ дан 23 November 2019 в 02:59
поделиться

в Экспрессе 4, это действительно просто

const app = express()
const p = process.env.PORT || 8082

app.use(express.json()) 
0
ответ дан 23 November 2019 в 02:59
поделиться

Большую часть времени 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())
0
ответ дан 23 November 2019 в 02:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: