Node.js 节点v13:我是否得到了';类型错误:jwt.sign不是函数;因为我';我在使用ES模块吗?
控制台错误:TypeError:jwt.sign不是函数 在my package.json中使用“type”:“module”尝试最新的节点版本13。到目前为止一切进展顺利,直到我尝试使用“jsonwebtoken”添加令牌身份验证。不确定这是我的代码还是兼容性问题?使用他们的ES模块与我在React中使用的模块有些不同 创建新的令牌辅助函数Node.js 节点v13:我是否得到了';类型错误:jwt.sign不是函数;因为我';我在使用ES模块吗?,node.js,jwt,es6-modules,Node.js,Jwt,Es6 Modules,控制台错误:TypeError:jwt.sign不是函数 在my package.json中使用“type”:“module”尝试最新的节点版本13。到目前为止一切进展顺利,直到我尝试使用“jsonwebtoken”添加令牌身份验证。不确定这是我的代码还是兼容性问题?使用他们的ES模块与我在React中使用的模块有些不同 创建新的令牌辅助函数 import * as jwt from 'jsonwebtoken' export const newToken = user => {
import * as jwt from 'jsonwebtoken'
export const newToken = user => {
return jwt.sign({id: user.id}, JWT_SECRET, {
expiresIn: '1d'
})
}
注册函数
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')
}
每次我点击注册路径时,我都会得到500个错误,并且仍然有一个用户注册到我的数据库中。有点碰壁
谢谢大家,节日快乐
编辑:我刚刚将我的导入/导出语句更改为通用模块,并且我能够获得令牌。仍然不知道如何修复此问题以使用ESModules,甚至不知道问题出在哪里jsonwebtoken使用默认导出来公开其函数() 因此,您可以使用如下导入方式加载模块:
import jsonwebtoken from 'jsonwebtoken';
const token = jsonwebtoken.sign({ foo: 'bar' }, 'shhhhh');
当您使用require而不是import时,仍然存在此问题?您已经从npm/Thread安装了jsonwebtoken?@Misha yea我刚刚换回了通用模块,只更改了导入/导出的代码,它的工作方式与我预期的一样!我很困惑为什么我只在使用新模块的jsonwebtoken时遇到问题没有问题:)如果您想了解更多信息,请查看