[expressjs/express]在 v4 中弃用非整数状态代码

2023-12-08 114 views
9

这与#4212 相关,实际上做了两件事。首先,它使用以前在 中使用过的res.status任何地方。这不应该是一个重大改变。它允许我们检查状态代码以便弃用。与内部使用相关的更改是从#4212 复制的。 this.statusCode = Nresres.status

希望将其作为包含在 v4 中的选项打开,以警告人们 v5 中对其应用程序进行的重大更改。

这里的目标是仅打印在 v5 下抛出但当前在 v4 下不会抛出的行为的弃用消息。具体来说,我希望避免用户看到关于某些内容很快就会抛出的弃用信息,然后在看到 Node.js 因不良状态而抛出错误后立即看到。如果是这样的话,我已经可以看到 Github 问题了。

有两条部门消息,希望能够帮助人们具体了解正在发生的事情以及行为将如何改变。

将打印 dep 消息的两种情况:

  • Node.js 接受的有效范围内的字符串值,即'200''304.5'。所有字符串均在 v5 下抛出
  • Node.js 接受的有效范围内的非整数值,即200.5

回答

7

首先,它在之前在 res 中使用过 this.statusCode = N 的所有地方都使用 res.status。这不应该是一个重大改变

不幸的是,但我不久前尝试进行这种更改,但它必须恢复,因为这是一个破坏性的更改。这是因为人们会超越res.status去做事情,并且他们不希望他们在以前没有的地方被调用。

希望将其作为包含在 v4 中的选项打开,以警告人们 v5 中对其应用程序进行的重大更改。

这是一个好主意!

这里的目标是仅打印在 v5 下抛出但当前在 v4 下不会抛出的行为的弃用消息。具体来说,我希望避免用户看到关于某些内容很快就会抛出的弃用信息,然后在看到 Node.js 因不良状态而抛出错误后立即看到。如果是这样的话,我已经可以看到 Github 问题了。

是的,我肯定同意这一点👍如果我们已经不接受某个值,那么就没有什么可以真正弃用的,因为如果我理解正确的话,它已经不起作用了。

6

是的,您了解何时打印消息的目的,仅针对从完全不抛出到在 v5 中抛出的行为。

这是一个耻辱res.status,本来是打印所有状态的这个部门的简单方法。

你有什么建议吗?恢复这些更改,只res.status包括此检查是最简单的,但我真的想尝试向任何将在 v5 中看到抛出的人发出通知。我可以创建一个checkForDeprecatedStatus函数并在设置状态代码作为响应的任何地方使用它。你对此有何看法?

5

你对此有何看法?

这很好,因为depd只要助手位于同一个文件中,堆栈跟踪仍然可以正常进行。

8

在我明天尝试合并之前,只是想在这里发表评论:从你的角度来看,这一切都准备好了,你知道没有什么突出的吗?只需在着陆前办理登机手续即可:+1:

6

PS 作为更新,几天前我推送了(作为单独的提交)一些围绕 的完整功能的通用res.status测试,这些测试本质上会覆盖此 PR 中添加的新分支和行(从而满足测试覆盖率)。当然,事实证明,与所有 Node.js 行相比,io.js 分支在我们不赞成的边缘情况下有不同的行为......我正在考虑如何最好地解决它,因为只是不包括那些特定的测试仍然会有一些测试,但它不会完全覆盖这里添加的新分支,哈哈。

我认为在花费大量时间研究之后,没有任何合理的方法可以“嗅探”差异 - 但如果有人知道,请纠正我!我只是要添加一些代码来跳过 io.js 构建上的这些测试,因为这似乎是唯一合理的方法。事实上,甚至存在这种奇怪的差异,这导致人们相信在 5.0 中直接在 Express 中抛出这种行为,因为这是正在推动的,因为这些边缘情况的具体处理,Express 至少可以在 Express API 正在使用时保持一致。用过的。