【发布时间】:2020-06-09 01:48:00
【问题描述】:
TLDR : express-jwt 与在 node.js API 的 req 参数中添加内容的包产生冲突(例如 express-upload,multer)。
我正在开发 node.js API,但我无法删除任何包。我正在尝试将文件从前端上传到 API。我为此使用了许多软件包(express-fileupload、multer ...),但它们都没有解决我的问题。创建 API 的人使用 express-jwt 进行身份验证。它通过在 API 的 req.user 字段中添加一些信息来工作。
我的问题是 nodejs 中用于上传文件的包似乎与 express-jwt 冲突。如果我禁用它,req.files 会按原样填充,并且一切正常。但是当我重新安装 express-jwt 时,req.files 始终为空。我不能只使用另一个身份验证包。我不知道如何解决这个问题。
【问题讨论】:
-
您可以引入一个自定义中间件函数,该函数在
express-fileupload之后和express-jwt之前运行,然后将req.files的内容存储在res.locals.files内,然后改用它。这是选项之一。 -
@goto1 好的,所以在评论这一行之后:
app.use(expressJwt({secret: PUBLIC, strict : false}).unless({path : unless}));,req.files 不再为空。我不明白,因为导致问题的代码行在第一个中间件中,并且 express-fileupload 出现在我正在使用的路由之前......知道吗? -
我不确定这些包在幕后是如何工作的,所以我不确定发生了什么。我建议在
expressJwt中间件之前和之后记录req.files,看看是否有任何区别。 -
@goto1 你是对的,它现在可以工作了。感谢您的宝贵时间。
标签: node.js express multer express-jwt