nodemailer无法读取req.body

时间:2019-01-21 12:57:58

标签: node.js axios nodemailer body-parser

我对节点中的解析请求有疑问。我无法登录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解析器”:“ ^ 1.4.3”,
  • “表达”:“ ^ 4.16.4”,
  • “ nodemailer”:“ ^ 5.1.1”,

帮助:(

1 个答案:

答案 0 :(得分:1)

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());