nodemailer не может прочитать req.body - PullRequest
0 голосов
/ 21 января 2019

У меня проблема с запросом на анализ в узле. Я не могу войти req.body, потому что запрос является строкой. Посмотрите на этот пример:

front.js

const data = { name: "John" };
axios.post('http://[address]/sendmail', JSON.stringify(data));

server.js

const express = require('express');
const path = require('path');
const app = express();
const bodyParser = require('body-parser');
const exec = require('child_process').exec;

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true,  }));
const nodemailer = require("nodemailer");


app.get('/', (req, res) => {
  res.send("OK")
})

app.post('/sendmail', (req, res) => {
   console.log(req.body) //!!!! here is my problem
   //server shows me: { '{"userName":"Agata"}': '' }
}

Когда я отправляю данные по axios на мой сервер, у него возникает проблема с анализом этих данных. Я не могу получить свойства от объекта, потому что это выглядит так:

{ '{"userName":"Agata"}': '' }

Версия:

  • "body-parser": "^ 1.18.3",
  • "cookie-parser": "^ 1.4.3",
  • "экспресс": "^ 4.16.4",
  • "nodemailer": "^ 5.1.1",

Справка :(

1 Ответ

0 голосов
/ 21 января 2019

JavaScript-функция JSON.stringify() преобразовывает объект в строку, поэтому вы получаете данные в этом формате { '{"userName":"Agata"}': '' }.

Ваш файл front.js должен выглядеть следующим образом:

const data = { name: "John" };
axios.post('http://[address]/sendmail', data);

Для server.js необходимо реализовать bodyParser.json([options]), это возвращает промежуточное ПО, которое только анализирует json и смотрит только на запросы, в которых заголовок Content-Type соответствует параметру type. Этот синтаксический анализатор принимает любую кодировку Unicode тела и поддерживает автоматическое наложение кодировок gzip и deflate.

Это был бы способ использовать его с express.js

var bodyParser = require('body-parser');
app.use(bodyParser.json());
...