如何摆脱 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 弃用警报?的主要内容,如果未能解决你的问题,请参考以下文章
弃用Java8,摆脱zookeeper,Kafka3太惊艳了!