标签: body-parser

TSLint 将 body-parser 标记为已弃用

我有下面的打字稿代码:

import * as express from 'express';
import * as bodyParser from 'body-parser';

...
const app: express.Application = express();

app.use(bodyParser.json());

Run Code Online (Sandbox Code Playgroud)

在 VSCode 中,最后一行的 bodyParser 用黄色波浪线标记,表示不推荐使用 body-parser。

在 .d.ts 文件中,我看到以下内容:

/** @deprecated */
declare function bodyParser(
    options?: bodyParser.OptionsJson & bodyParser.OptionsText & bodyParser.OptionsUrlencoded,
): NextHandleFunction;

declare namespace bodyParser {
...
    function json(options?: OptionsJson): NextHandleFunction;
Run Code Online (Sandbox Code Playgroud)

为什么 linter 会抱怨 body-parser 函数,而我没有在我的代码中将它用作函数?我是否在 tsconfig.json 文件中遗漏了一些东西来防止这种情况发生?编译似乎没有问题。

typescript tslint body-parser

18
推荐指数
2
解决办法
9398
查看次数

尽管我已经安装了它,为什么对node.js body-parser的调用会失败?

我开始学习node.js并试图找出如何获取POST请求的内容.我想按照这篇文章中的说明进行操作.到目前为止,我已成功安装了node.js(在Windows 7上)并表达,并且能够使我的第一个脚本工作.但是当我尝试使用body-parser时,问题出现了.我安装了它,它似乎在那里(这是截图)

这是node.js脚本的代码

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(express.json());       // to support JSON-encoded bodies

app.get('/', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('Vous êtes à l\'accueil');
});

app.get('/user/:usernum', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    res.end('You are on page USER with n° : ' + req.params.usernum);
});

// https://stackoverflow.com/questions/5710358/how-to-get-post-a-query-in-express-js-node-js
app.post('/adonis', function(req, res) {
    res.setHeader('Content-Type', 'text/plain');
    console.log(req.body.title);
//    res.write(JSON.stringify(req));
    res.end('Hopefully I stringified a POST');
});

// ... Tout …
Run Code Online (Sandbox Code Playgroud)

node.js express body-parser

16
推荐指数
3
解决办法
4万
查看次数

不推荐使用当前URL字符串解析器

当我通过"node app.js"命令运行代码时,显示此错误

(node:2509)DeprecationWarning:不推荐使用当前的URL字符串解析器,将来的版本将删除它.要使用新的解析器,请将选项{useNewUrlParser:true}传递给MongoClient.connect.

mongoose mongodb node.js body-parser

16
推荐指数
2
解决办法
2万
查看次数

在 tsconfig.json 中找不到“body-parser”的类型定义文件

我在 [1,1] 处的 tsconfig.json 文件中收到此错误六次:

Cannot find type definition file for 'body-parser'.
  The file is in the program because:
    Entry point for implicit type library 'body-parser'
Run Code Online (Sandbox Code Playgroud)

我真的不确定为什么会收到此错误,更不用说六次了。任何帮助将不胜感激。

这是我的 tsconfig:

{
  "compilerOptions": {
    /* Visit https://aka.ms/tsconfig.json to read more about this file */

    /* Projects */
    // "incremental": true,                              /* Enable incremental compilation */
    // "composite": true,                                /* Enable constraints that allow a TypeScript project to be used with project references. */
    // "tsBuildInfoFile": "./",                          /* Specify the folder for .tsbuildinfo …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs tsconfig body-parser

15
推荐指数
3
解决办法
2万
查看次数

请求正文中的JSON数据未使用正文解析器进行解析

当我使用postman发送POST请求到localhost:8080/api/newUser with request body:

{name: "Harry Potter"}
Run Code Online (Sandbox Code Playgroud)

在服务器端,console.log(req.body)打印:

{ '{name: "Harry Potter"}': '' }
Run Code Online (Sandbox Code Playgroud)

server.js

var express = require('express'); 
var app = express();
var router = express.Router();
var bodyParser = require('body-parser');

app.use('/', express.static(__dirname));

router.use(function(req, res, next) {
    next();
});

router
    .route('/newUser')
    .post(function(req, res) {
        console.log(req.body);
    });

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // support json encoded bodies
app.use('/api', router);

app.listen(8080);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

node.js express body-parser

12
推荐指数
2
解决办法
8067
查看次数

无法使用NodeJS/ExpressJS和Postman获取POST数据

这是我服务器的代码:

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

app.post("/", function(req, res) {
    res.send(req.body);
});

app.listen(3000, function () {
    console.log('Example app listening on port 3000!');
});
Run Code Online (Sandbox Code Playgroud)

从邮递员,我发起一个POST请求到http:// localhost:3000 /并在Body/form-data中我有一个键"foo"和值"bar".

但是我在响应中不断得到一个空对象.该req.body物业总是空的.

我错过了什么?在此输入图像描述

node.js express postman body-parser

12
推荐指数
2
解决办法
1万
查看次数

如何使用multer或body-parser上传文件

我是NodeJS初学者,跟随着一本书"使用MongoDB和NodeJS进行Web开发".我被困在第6章"闷闷不乐".当我使用multer进行文件上传时,服务器会抛出以下错误:

/Users/fk / Documents / imageuploader / node_modules / express / lib / application.js: 209
throw new TypeError('app.use() requires middleware functions'); ^

TypeError: app.use() requires middleware functions
Run Code Online (Sandbox Code Playgroud)

但当我用bodyParser替换它时,服务器会启动,但是当我点击上传按钮时,它会在浏览器上给出以下错误.

500 TypeError: Cannot read property 'file' of undefined
Run Code Online (Sandbox Code Playgroud)

但是,它应该将我重定向到另一个页面,其中显示上传的文件.

这是我的bodyParser代码,请查看我是否正确使用它,因为它在服务器启动时给了我"body-parser deprecated".我已经看到过像我这样的其他问题,但我遵循但没有一个真正起作用.

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

app.use(bodyParser({
  uploadDir: path.join(__dirname, '../public/upload/temp')
}));
Run Code Online (Sandbox Code Playgroud)

以下代码显示了我如何使用multer,以防万一我不应该做的事情请告诉我.如果上传文件,正文解析器或者multer,哪一个会更好?

app.use(multer({
  dest: path.join(__dirname, '../public/upload/temp')
}));


var saveImage = function() {
  var possible = 'abcdefghijklmnopqrstuvwxyz0123456789',
    imgUrl = '';

  for (var i = 0; i < 6; i += 1) {
    imgUrl …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express multer body-parser

11
推荐指数
2
解决办法
2万
查看次数

带有 formdata 的 Express body-parser req.body 是空对象

不知何故我的 req.body 总是空的,也许你有一个想法:

这是我的服务器代码:

const Express = require('express');
const bodyParser = require('body-parser');

const app = new Express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.post('/save', (req, res) => {
  console.log(req.body)  // => {}
  res.send(req.body);
});

const env = process.env.NODE_ENV || 'production';
app.listen(3000, err => {
   if (err) { return console.error(err); }
   console.info(`Server running on http://localhost:${port} [${env}]`);
});
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 javascript 发送 formdata 时,req.body 为空:

const data = new FormData(document.querySelector('form'));
console.log(data);  // seems empty already??? FormData{}??
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:3000/save');
xhr.send(data); …
Run Code Online (Sandbox Code Playgroud)

javascript form-data node.js express body-parser

11
推荐指数
2
解决办法
2万
查看次数

Express 中的 req.header 与 req.headers

我正在将 Express 与 Body Parser 一起使用。给定以下标题键:

X-Master-Key

当我使用下面的代码片段时,它无法输出值

req.headers['X-Master-Key'] // Fails
Run Code Online (Sandbox Code Playgroud)

但是当以上更改为时,它起作用了

req.headers['x-master-key'] // Works
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试输出时req.headers,结果发现 Express 以小写格式输出所有标题。


我开始进一步挖掘并尝试使用以下代码,这些片段中的任何一个都有效

req.header('X-Master-Key'); // Works

// -- OR

req.header('x-master-key'); // Works
Run Code Online (Sandbox Code Playgroud)

那么这里有什么问题呢?为什么 Express 将所有标题键更改为小写?此外,如何使用req.header()req.headers[]?

node.js express body-parser

11
推荐指数
1
解决办法
6490
查看次数

错误:使用multer和body-parser无效的json

我目前正在使用multer用于multipart/form-data在Node.js应用程式与旁边身体解析器.

我想POST使用邮差形式的数据,但得到这个错误.

Error: invalid json
    at parse (/Users/k/Documents/application/node_modules/body-parser/lib/types/json.js:79:15)
    at /Users/k/Documents/application/node_modules/body-parser/lib/read.js:102:18
    at IncomingMessage.onEnd (/Users/k/Documents/application/node_modules/body-parser/node_modules/raw-body/index.js:136:7)
    at IncomingMessage.g (events.js:199:16)
    at IncomingMessage.emit (events.js:104:17)
    at _stream_readable.js:908:16
    at process._tickDomainCallback (node.js:381:11)
Run Code Online (Sandbox Code Playgroud)

这就是我在server.js中添加multer和body-parser的方法

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var multer = require('multer');

var app = express();

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(multer({ dest: './uploads/'}));
Run Code Online (Sandbox Code Playgroud)

我想这可能是因为闷闷不乐.当我删除body-parser并再次尝试时,它会显示空的json for console.log(req.body)console.log(req.files).

注意:body-parser版本是1.12.0,multer版本是0.1.8.

json form-data node.js multer body-parser

10
推荐指数
1
解决办法
7126
查看次数