parser parse nodejs node instalar example cannot bodyparser body node.js web-services express

node.js - nodejs - Error: la mayoría del middleware(como bodyParser) ya no se incluye con Express



node install body parser (5)

Debe reemplazar el antiguo uso de middleware incluido ( express.bodyParser , express.methodOverride , express.errorHandler ) con middleware externo / separado. El enlace en el error le da los nombres de estos nuevos middleware. Es posible que desee comprobar la documentación de estos middleware para comprobar los cambios de API desde Express 3.

Necesito crear un servicio web y estoy usando Node.js en el servidor. Pero cuando estoy ejecutando en localhost obtengo un error:

Error: la mayoría del middleware (como bodyParser) ya no se incluye con Express y debe instalarse por separado. Por favor, consulte https://github.com/senchalabs/connect#middleware.

neo4jtest.js

var config = require(''./config''); var bodyParser = require(''body-parser''); var app = express(); var neo4jurl = process.env.NEO4J_URL ; neo4jurl = neo4jurl +''/db/data/''; var query = [ ''START me=node:node_auto_index(name={inputusername}) MATCH me<--friend<--friend_of_friend where (friend_of_friend.entitytype={inputentitytype}) RETURN friend_of_friend;'' ]; var insertquery = [ ''CREATE (user {entitytype:{inputentitytype}, name : {inputname}}) return user;'' ]; var queryforallrelation = [ ''start n = node:node_auto_index(name={inputusername}) match(n)--(x) return x;'']; // Config var env = process.env.NODE_ENV || ''development''; if (''development'' == env) { // configure stuff here app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(application_root, "public"))); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); } app.get(''/api'', function (req, res) { res.send(''REST API is running''); }); app.get(''/friendoffriend/:username'', function (req, res){ res.set({''Content-Type'': ''text/json''}); username = req.params.username; type = ''user''; neo4j.connect(neo4jurl, function (err, graph) { graph.query(query.join(''/n''), {inputusername : username, inputentitytype :type} ,function (err, results) { if (err) { res.send(HTTPStatus.INTERNAL_SERVER_ERROR,''Internal Server Error''); } else { res.send(HTTPStatus.OK,JSON.stringify(results)); } }); }); }); app.get(''/insertuser/:username'', function (req, res){ res.set({''Content-Type'': ''text/json''}); username = req.params.username; type = ''user''; neo4j.connect(neo4jurl, function (err, graph) { graph.query(insertquery.join(''/n''), {inputname : username, inputentitytype :type} ,function (err, results) { if (err) { res.send(HTTPStatus.INTERNAL_SERVER_ERROR,''Internal Server Error''); } else { res.send(HTTPStatus.OK,JSON.stringify(results)); } }); }); }); //Cypher Query with Javascript Callback Example function neo4jQuery(neo4jurl, query, parameters, giveresults) { neo4j.connect(neo4jurl, function (err, graph) { graph.query(query.join(''/n''), {inputusername : ''andrew''} ,function (err, results) { if (err) { giveresults(HTTPStatus.INTERNAL_SERVER_ERROR); } else { giveresults(JSON.stringify(results)); } }); }); } app.get(''/allrelations/:username'', function (req, res){ res.set({''Content-Type'': ''text/json''}); username = req.params.username; parameters = {inputusername : username}; neo4jQuery(neo4jurl, queryforallrelation, parameters, function(results){ res.send(results); }); }); app.listen(1212);

Lo siguiente es el error que obtuve de la consola:

C:/node/NodejsNeo4j1-master>node neo4jtest.js Error: Most middleware (like bodyParser) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware. at Function.Object.defineProperty.get (C:/node/NodejsNeo4j1-master/node_modules/express/lib/express.js:89:13) at Object.<anonymous> (C:/node/NodejsNeo4j1-master/neo4jtest.js:26:18) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3


EDITAR: He publicado un tenedor de la semilla de Brian con todos los cambios que figuran a continuación: https://github.com/LossyHorizon/angular-socket-io-seed

Encontré esta discusión mientras luchaba contra mí mismo. Estoy actualizando mi copia de
https://github.com/btford/angular-socket-io-seed antes de comenzar un nuevo proyecto. Planeo enviar mis cambios a Brian Ford cuando descubra cómo.

OLD package.json

"socket.io": "~0.9.16", "jade": "~0.31.2", "express": "~3.2.6"

NUEVO paquete. Json

"socket.io": "1.1.*", "jade": "1.6.*", "express": "4.8.*", "serve-favicon": "2", "morgan": "1.3.*", "method-override":"*", //added missing , "body-parser": "1.8", "errorhandler": "*", "express-session": "*", "multer": "0.1.*"

Necesitará agregar explícitamente el artículo intermedio que solía estar presente, una línea:

var express = require(''express'');

Se convierte en un montón de líneas:

var express = require(''express''); var favicon = require(''serve-favicon''); var logger = require(''morgan''); var methodOverride = require(''method-override''); var session = require(''express-session''); var bodyParser = require(''body-parser''); var multer = require(''multer''); var errorHandler = require(''errorhandler'');

ANTIGUO código de configuración:

app.set(''port'', process.env.PORT || 3000); app.set(''views'', __dirname + ''/views''); app.set(''view engine'', ''jade''); app.use(express.logger(''dev'')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.static(path.join(__dirname, ''public''))); app.use(app.router);

NUEVO código de configuración:

app.set(''port'', process.env.PORT || 3000); app.set(''views'', __dirname + ''/views''); app.set(''view engine'', ''jade''); app.use(favicon(__dirname + ''/public/favicon.ico'')); app.use(logger(''dev'')); app.use(methodOverride()); app.use(session({ resave: true, saveUninitialized: true, secret: ''uwotm8'' })); // parse application/json app.use(bodyParser.json()); // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: true })); // parse multipart/form-data app.use(multer()); app.use(express.static(path.join(__dirname, ''public'')));

Esta es la parte que me llevó para siempre. Tristemente, una vez que resolví esto busqué en express / lib / application.js, busqué app.listen y hay un maravilloso comentario que explica las cosas bastante bien. No estoy seguro de por qué fui tan lento para buscar la fuente, aunque parece que no estoy solo en eso.

Demos, docs, la mayoría de las publicaciones de blog, digamos que inicia su aplicación con esto, y funciona, pero nos bloquea el uso de socket.io (http y https al mismo tiempo también).

app.listen(app.get(''port''), function(){ console.log(''Express server on port '' + app.get(''port'')); });

Esto es funcionalmente el mismo, pero hace que el uso de socket.io sea fácil. Busque la fuente de app.listen () y verá que esto es lo que está haciendo de todos modos.

// could be/remain at top of file var http = require(''http''); var server = http.createServer (app); // delete this line if NOT using socket.io var io = require(''socket.io'').listen(server); server.listen(app.get(''port''), function(){ console.log(''Express server on port '' + app.get(''port'')); });

No me importa si utiliza la nueva sintaxis expresa ''estándar'', o esta sintaxis, el mismo objeto http se usa de cualquier manera, y como recuerdo, http es un componente incorporado a node.js de todos modos.

Espero que esto ayude a alguien más.



Tengo un problema similar y aún no he podido resolverlo.

Pero según mi lectura, de varias fuentes necesitas:

  1. Actualice su package.json para incluir las dependencias para todo el middleware como:

    "dependencies": { "express": "*", "body-parser": "*", "method-override": "*", . . . }

    o simplemente puede ejecutar cada uno por separado en el símbolo del sistema como

    npm install body-parser --save-dev

    Tendrás que hacer esto para el middleware que utilizas fuera de la lista breve que se muestra here o la lista completa here .

    Por lo que puedo ver, en tu código, estás usando: body-parser, method-override, static y errorhandler.

  2. Tendrás que eliminar la línea:

    app.use(app.router); como se describe here

Como dije, también estoy trabajando en ello. Te sugiero que hagas los cambios y me digas si el error en la consola cambia.


  • Primero instalas bodyParser:

    npm install body-parser

  • Y úsala:

    var bodyParser = require(''body-parser''); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json());