错误:大多数中间件(如 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 捆绑在一起,必须单独安装。请参见的主要内容,如果未能解决你的问题,请参考以下文章

P2P通信原理与实现

P2P通信原理与实现(02)

Shell脚本编程之基本运算符

如何处理 Android 运行时权限中的“不再询问”复选框?

Safari错误。 Javascript ajax json对象 - 无法获取属性。对象可能不再存在

ngrok 状态错误 - 看起来 ngrok 隧道不再存在