les*_*les 1 node.js jwt es6-modules
控制台错误:TypeError:jwt.sign 不是函数
在我的 package.json 中使用 "type": "module" 尝试最新的 Node 版本 13。到目前为止一切都很顺利,直到我尝试使用“jsonwebtoken”添加令牌身份验证。不确定这是我的代码问题还是兼容性问题?使用他们的 ES 模块与我在 React 中使用的有一些不同。
创建新的令牌辅助函数
import * as jwt from 'jsonwebtoken'
export const newToken = user => {
return jwt.sign({id: user.id}, JWT_SECRET, {
expiresIn: '1d'
})
}
Run Code Online (Sandbox Code Playgroud)
注册功能
export const signup = async (req, res, next) => {
// ...
try {
//.. create user code ..
const user = new User({email, password})
user.save()
const token = newToken(user)
return res.json({token, user})
} catch (error) {
console.error(error)
res.status(500).send('Server Error')
}
Run Code Online (Sandbox Code Playgroud)
每次我点击注册路线时,都会收到 500 错误,并且用户仍然会注册到我的数据库中。有点撞墙了。。
谢谢大家,节日快乐!
编辑:我刚刚将导入/导出语句更改为通用模块,并且我能够获得令牌。仍然不知道如何修复此问题以与 ESModules 一起使用,甚至不知道问题是什么
jsonwebtoken 使用默认导出来公开其功能(https://github.com/auth0/node-jsonwebtoken/blob/master/index.js)。
因此,您可以使用 import 加载模块,如下所示:
import jsonwebtoken from 'jsonwebtoken';
const token = jsonwebtoken.sign({ foo: 'bar' }, 'shhhhh');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3092 次 |
| 最近记录: |