如何摆脱 Connect 3.0 弃用警报?

Posted

技术标签:

【中文标题】如何摆脱 Connect 3.0 弃用警报?【英文标题】:How to get rid of Connect 3.0 deprecation alert? 【发布时间】:2013-11-04 01:24:12 【问题描述】:

我是一名 node.js 开发人员,他使用 express.js 创建 Web 应用程序。 到目前为止,我的问题是:

每当我在我的计算机上创建一个应用程序时,npm 安装它的东西并运行它(使用 node app.js 和 nodemon)我会在控制台中收到这条消息:

connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0
Express server listening on port 3000

该应用程序可以运行,这很好。但是当我克隆在其他计算机上创建的应用程序时,我没有收到该消息,所以我想我的计算机中有一些过时的东西。

我去了消息中提到的网站并确认了我的猜测。这是一个弃用警告。但是,我已经更新了 node 和 npm 以及 global express,但我仍然收到了注释。

因此,我的问题是:我不知道我需要更新什么才能摆脱弃用说明,因为它们吓坏了我。

我希望有人可以帮助我。 非常感谢。

【问题讨论】:

你试过直接使用其他库吗?比如多方(哪个快递在幕后使用?)——在帖子底部andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html有一个很好的列表。 【参考方案1】:

此警告将在 Express 更新为使用 Connect 3.0 后消失 - 作为临时修复,请按照 https://github.com/senchalabs/connect/wiki/Connect-3.0 顶部的说明进行操作。具体来说,在您的应用中找到这一行:

app.use(express.bodyParser());

并将其替换为以下内容(这是 bodyParser 在 3.0 中的内容):

app.use(express.json());
app.use(express.urlencoded());

【讨论】:

关于连接 3.0 问题的更多信息在这里:groups.google.com/d/msg/express-js/iP2VyhkypHo/5AXQiYN3RPcJ 我还需要添加 app.use(express.multipart()),因为我的多部分表单停止工作(当然),这也带来了弃用警告(当然)。 使用 wiki 中列出的多部分解析器之一。不要使用连接/表达' 谢谢!你!我快要疯了【参考方案2】:

我负责此弃用通知。你读过维基吗? https://github.com/senchalabs/connect/wiki/Connect-3.0

第 1 步:直接使用每个解析器,而不是 app.use(express.bodyParser());

app.use(express.json());
app.use(express.urlencoded());

第 2 步:使用不同的多部分解析器,例如:可以使用 connect-multiparty

app.use(require('connect-multiparty')())

connect 3 和 express 4 的工作尚未开始,因为节点 0.12 需要一段时间才能发布。目前还没有什么可更新的。

【讨论】:

这不是弃用通知——它是一个重大更改。 app.use(express.bodyParser) 不再适用于最新版本,但库的主要版本号没有改变,这打破了 semver 的概念。 npm install express运行最新版本,并做一个非常简单的:var express = require('express'), app = express(); app.use(express.bodyParser); app.get('/', function(req,res) res.send(200, 'ok');); app.listen(3000);。向http://localhost:3000/ 发出请求会挂起 curl 和浏览器并打印警告。删除 app.use(express.bodyParser) 或切换到 app.use(express.json()) 会导致应用返回“ok”并显示 HTTP 状态 200。 是多方连接,而不是多方连接 我希望有一个选项可以禁止此警告;虽然弃用通知很重要,但在企业环境中很少有没有选择禁止它们的选项。我目前的情况使我无法进行必要的更改以在至少 6 个月内避免该消息,但我可以使用配置选项,但现在我们将这些以不同的格式散布在我们的日志中,这使得我们的旧日志解析器不太高兴.只是思考的食物;弃用通知很重要,但如有必要,开发人员需要一种方法将其排除在外。 @Kris 如果您不能直接使用 json 和 urlencoded 中间件(大概是因为您使用多部分支持来处理文件上传),您可以在 bodyParser 实例化时暂时覆盖 console.log,然后把它带回来。我在 Sails 中使用了一段时间的这种方法来规范我们的日志输出【参考方案3】:

由于 express 只是一个连接的包装器,我建议直接使用 connect。

所以而不是: app.use(express.bodyParser());

使用:

connect = require('connect');
app.use(connect.json());
app.use(connect.urlencoded());

【讨论】:

以上是关于如何摆脱 Connect 3.0 弃用警报?的主要内容,如果未能解决你的问题,请参考以下文章

替换已弃用的函数 mysql_connect [重复]

PHP数据库-Mysql

PHP连接MySQL数据库

弃用Java8,摆脱zookeeper,Kafka3太惊艳了!

UseSpaPrerendering 从 .net core 3.0 开始被弃用,有啥替代方案?

iOS10 (Swift 3.0) 中弃用 UILocalNotification 接收功能