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

我开始学习node.js并试图找出如何获取POST请求的内容。 我试图按照这篇文章中的说明。 到目前为止,我已经成功安装了node.js(在Windows 7上)并且expression了,并且能够获得我的第一个脚本的工作。 然而,当我尝试使用身体分析器时,我的问题来了。 我已经安装了它,它似乎在那里 (这里是一个截图)

这里是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 le code de gestion des routes (app.get) se trouve au-dessus app.use(function(req, res, next){ res.setHeader('Content-Type', 'text/plain'); res.status(404).send('Page introuvable !'); }); app.listen(8091); 

然而,当我运行它,node.js抛出一个错误,说:“无法find模块身体分析器”。 我做错了什么?

根据@ Kale和其他人的build议,我尝试在本地安装body-parser,但是这似乎没有帮助,因为现在我的脚本给出了以下消息:

 Error: Most middleware (like json) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware. at Function.Object.defineProperty.get (d:\smartguide\nodejs\node_modules\express\lib\express.js:99:13) at Object.<anonymous> (d:\smartguide\nodejs\oc1.js:5:16) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3` 

我尝试在本地和全球安装“JSON” – 安装似乎工作,但它没有区别文件错误。

正如Kevin B所说,您可能必须在本地安装body-parser并将其保存到清单:

 npm install --save body-parser 

这个答案要简单得多。 转到基本目录并链接到所需的全局模块。

 npm link body-parser 

没有必要在整个地方安装模块。 如果模块没有全局安装,则上述命令将全局安装该模块,然后在本地链接。

我想我正在做一些根本性的错误 – 我回到基础,重新开始,这次确保我有一个package.json文件。 现在起作用了。

这里是代码:

 var express = require('express'); var session = require('cookie-session'); var bodyParser = require('body-parser'); var urlencodedParser = bodyParser.urlencoded({ extended: false }); var jsonParser = bodyParser.json(); var app = express(); // JSON testing app.post('/json-test', jsonParser, function(req, res) { if (!req.body) return res.sendStatus(400); console.log(JSON.stringify(req.body)); console.log(req.body.title); res.status(200).send(req.body.title); }) // Can't get anything else .use(function(req, res, next){ res.setHeader('Content-Type', 'text/plain'); res.status(404).send('Page introuvable !'); }) .listen(8090); 

这里是package.json

 { "name": "todo1", "version": "0.1.0", "dependencies": { "express": "~4.11.0", "ejs": "~2.1.4", "cookie-session": "~1.1.0", "body-parser": "~1.10.1" }, "author": "Martin", "description": "Un gestionnaire de todolist ultra basique" }