You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用express-jwt已配置secret仍报secret should be set错误求助

问题解答

首先明确:外层的async自执行函数不是导致该报错的原因。

报错根因

你使用了express-jwt v7及以上的版本,该版本做了破坏性更新,和v6及之前版本的导入、调用方式不兼容:
v7+版本不再支持直接通过const jwtExpress = require('express-jwt')导入调用函数,直接require得到的是一个模块对象而非可执行函数,你传入的配置参数没有被正确接收,因此内部读取options.secret时读到的是undefined,触发报错。

解决方法

两种方案二选一即可:

  • 方案一:降级到兼容的v6版本
    执行安装命令:
    npm install express-jwt@6
    安装完成后现有代码无需修改即可正常运行。
  • 方案二:适配v7+版本的语法
    将express-jwt的导入语句修改为:
const { expressjwt: jwtExpress } = require('express-jwt')

其余配置逻辑保持不变即可。

额外注意事项

你的代码中混用了CommonJS的require语法和ES Module的import语法,如果你的package.json中没有配置"type": "module",后续运行会触发导入语法错误,建议统一使用同一种模块规范:

  • 如果用CommonJS:将redis和UserApi的导入改为require写法
  • 如果用ES Module:将所有require改为import写法,同时在package.json中添加"type": "module"配置

内容的提问来源于stack exchange,提问作者natey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:36:00