关于connect自带的中间件的问题
发布于 8 年前 作者 JerrysShan 4322 次浏览 来自 问答

我在node.js实战这本书,看到connect自带的中间件的这章的时候,想练习书中的代码时,发现这段代码自己 写总是报错,很纳闷,代码如下,很简短:

var connect = require(“connect”); var app = connect() .use(connect.query()) .use(function (req, res, next) { res.setHeader(“Content-Type”, “application/json”); res.end(JSON.stringify(req.query)); });

app.listen(3000); 总是报:TypeError: connect.query is not a function 我用的node版本是:v4.2.3,connect模块正确引用了,但是不明白原因,在网上看到一篇文章说是自从3.*版本以后connect不再提供中间件什么的,需要手动获取之类的,所获取的信息不多,请大神解答!

10 回复

大神们呢???

就是拆分了。需要另外引用模块

npm install connect 就ok了

conect readme

Some middleware previously included with Connect are no longer supported by the Connect/Express team, are replaced by an alternative module, or should be superseded by a better module. Use one of these alternatives instead:

  • query

早先版本3.x集成querystring一类的中间件,其实就是把url中的query部分解析出来,变成{key : value}的形式挂载到request对象上去了。以后遇到req.files,req.body等都是一样的原理,只不过用了不同的中间件来做了处理。中间件就是加工加工,或者做一些日志呀,监控呀~PS:楼主记得markdown格式化代码

@luicfer ,意思我需要require(‘query’),如果需要该模块的话,是这样吗?

@SinalVee ,我找到就是这段话,你还知道这方面更详细的信息吗?

@DevinXian ,刚学,听你说的明白了一些,但还有一些不太明朗,谢谢!

@JerrysShan 文档,官网上可以找到的呀~举个简单的例子,中间件body-parser就是在每个请求来到服务器端时,解析请求携带的参数,然后方便下一步使用。如果请求类型是multi/form-data类型的,使用multer一类的进行请求提解析就比较方便了。典型的还有session处理等~中间件就是工具,替你做了某些工作而已,完全可以不要,不过那什么都得自理~

简单点讲就是你看的这本书已经远远地过期了。

回到顶部