【问题标题】:Property 'locals' does not exist on type 'Response'“响应”类型上不存在属性“本地人”
【发布时间】:2020-01-22 11:48:37
【问题描述】:

我想使用res.locals 在中间件之间传递一些数据,但打字稿说我不能。 :(

顺便说一句,我正在使用Restify。我需要插件吗? 如果没有,将不胜感激在中间件之间传递数据的替代解决方案。

【问题讨论】:

    标签: node.js typescript restify


    【解决方案1】:

    ⚠️ 如果您使用 typescript,则会出现错误,因为 locals 不是 Interface res 的一部分。

    所以,如果你想添加自己的属性,例如在 res 中,那么你可以这样:res['locals'] = { name: 'John doe' }

    ? 更新:添加属性以恢复 res

    要将locals 属性声明为您的restifyResponse,您可以使用以下代码:

    declare module 'restify' {
      interface Response{
        locals: any
      }
    }
    

    声明你自己的属性后,在你的 Restify Response 中有一个 locals 的例子,所以,现在你可以在你的 restifyresponse 中使用 locals

    希望对你有帮助。

    【讨论】:

    • res['locals']res.locals没有区别
    • 我的意思是你想将数据传递到 res.locals。但是 res.locals 不是 res 属性。这就是为什么你会得到一些错误。我一直在尝试使用 res['locals'] 并且效果很好。
    • 我已经更新了我的答案,希望对你有帮助。
    • 感谢您的更新。虽然它有效,但我决定不使用它。我已经更改了我的代码,因此它不会依赖于中间件之间的通信。无论如何,谢谢。
    • 如果结果如您所愿,别忘了标记为“正确答案”✔️。
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2017-01-11
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多