错误:大多数中间件(如 json)不再与 Express 捆绑在一起,必须单独安装。请参见
Posted
技术标签:
【中文标题】错误:大多数中间件(如 json)不再与 Express 捆绑在一起,必须单独安装。请参见【英文标题】:Error: Most middleware (like json) is no longer bundled with Express and must be installed separately. Please see 【发布时间】:2014-05-26 20:12:00 【问题描述】:我将我的源窗口移动到 ubuntu :
错误:大多数中间件(如 json)不再与 Express 捆绑在一起,必须单独安装。请参阅https://github.com/senchalabs/connect#middleware。
这是我的来源,谢谢
var http = require('http');
var fs = require('fs');
var express = require('express');
var mysql = require('mysql');
var ejs = require('ejs');
var app = express();
app.use(express.bodyParser());
app.use(app.router);
【问题讨论】:
您点击了链接吗?听起来他们刚刚改变了您下载所需作品的方式。 【参考方案1】:express 4.x 有许多变化。正如错误所说,所有中间件都已被删除。
更新您的 package.json 以包含“新”包,可以找到基本列表 here 和完整列表 here
使用上面的代码,您只需要以下内容:
// package.json
"dependencies":
"express":"*",
"body-parser":"*"
然后更新您的来源以反映新的变化:
// app.js
var http = require('http'),
fs = require('fs'),
express = require('express'),
bodyParser = require('body-parser'),
mysql = require('mysql'),
ejs = require('ejs');
var app = express();
app.use(bodyParser.urlencoded(
extended: true
));
app.use(bodyParser.json());
请注意,app.use(app.router) 也已被删除。
【讨论】:
哇!谢谢老兄,你节省了我的时间! :) 我是 NodeJS 的初学者,尽管我从它的存在就听说过它! :) 直到我执行以下操作,我的代码才运行! 1)。更新了要定义bodyParser依赖的包! 2)。正如您在 Vars 列表中给出的那样,声明了对变量(js 对象)的类引用。 3)。替换了我的教程指导应用程序 app.use(express.bodyParser()) 中的以下行有以下内容:app.use(bodyParser());现在我的节点服务器照原样启动! :) 谢谢您的帮助! Express 4 似乎是新问题。* 没问题,很高兴能帮上忙。这不是一个真正的问题,更多的是一个功能:)。 express 中的所有中间件都被分离成包,这样你就可以只得到你需要的东西,并保持你的代码小而专注。问题是所有的例子、书籍和视频都是关于以前的版本,所以会暂时留下一些混乱。如果您正在学习并且正在学习教程,您可能还想通过在 package.json 文件中指定版本来坚持使用 express 3.x。 :) 是的,很抱歉这个错误,这不是 Express 4.* 的问题,但它是未来的一个功能! :) 因为,他们试图以你所说的方式改进它,以模块化的方式!而且我正在阅读使用 3.x 的旧教程,但我倾向于自己更正和更新它们以符合 Express 4.x 和其他中间件插件! :) 因为这样我可以为更新的平台构建! :) (Y) 我现在正面临类似的问题。上面代码中的“extended: true”从何而来。 扩展选项允许在使用 querystring 库(如果为 false)或 qs 库(如果为 true)解析 URL 编码数据之间进行选择。 “扩展”语法允许将丰富的对象和数组编码为 URL 编码格式,从而提供类似 JSON 的 URL 编码体验。有关详细信息,请参阅 qs 库。来自npmjs.com/package/body-parser【参考方案2】:如果某些中间件没有与 express 捆绑,那么在使用它们时不要使用 express 关键字..
而不是这个 -
app.use(express.bodyParser());
写这个 -
app.use(bodyParser());
【讨论】:
两种说法没有区别。 ://【参考方案3】:在我的情况下,我正在导出一个我没有安装的包,即快递包。安装软件包后,我的问题就消失了。我使用的中间件是
app.use(express.json())
检查你的 package.json 文件是否安装了这个包。如果未安装,您可能会遇到同样的错误。
【讨论】:
以上是关于错误:大多数中间件(如 json)不再与 Express 捆绑在一起,必须单独安装。请参见的主要内容,如果未能解决你的问题,请参考以下文章
如何处理 Android 运行时权限中的“不再询问”复选框?