我正在编写一个Express应用程序,我在使用AirBnB eslint configuration。该lint配置提供了一个no-params-reassign
检查,该检查标记重新分配参数和这些参数的成员为错误。我个人喜欢这个,但我不确定是否有方法修改Express中的req
和res
而不改变功能参数。修改res而不会改变参数
例如,我想重写在中间件请求的一部分:
app.use((req, res, next) => {
req.url = req.url.replace("regex", "replacement");
});
这引发棉绒错误。我知道我可以通过这样做使错误消失:
app.use((_req, res, next) => {
req = _req;
req.url = req.url.replace("regex", "replacement");
});
...但这似乎是一个有点愚蠢的解决方案。是否有替代Express中的未来中间件调用的req
和res
变量的方法,还是保持更改以实际变异它们的唯一方法?
我知道我可以重写no-params-reassign
规则,但我想看看是否可以在不这样做的情况下实现此目的。谢谢!
简答题?是的,一般的规则是当你的中间件走过时需要修改'req'和'res'。官方指南甚至建议[这样做](http://expressjs.com/en/guide/writing-middleware.html)。可能有一种解决方法,但我从来没有见过。 req.replacedUrl = req.url.replace(“regex”,“replacement”);'发出'eslint'警告? – dvlsg
是的 - 教条是不改变参数。 Guess Express可能与此不兼容? –
我当然可能会误会,但它似乎是推荐使用Express的方式。和大多数nodejs http /服务器库,真相被告知。我认为这个想法是,中间件通常用于“扩展”你需要的部分请求/响应对象。无论好坏。 – dvlsg