Node.js 节点v13:我是否得到了';类型错误:jwt.sign不是函数;因为我';我在使用ES模块吗?

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 => {

控制台错误:TypeError:jwt.sign不是函数

在my package.json中使用“type”:“module”尝试最新的节点版本13。到目前为止一切进展顺利,直到我尝试使用“jsonwebtoken”添加令牌身份验证。不确定这是我的代码还是兼容性问题?使用他们的ES模块与我在React中使用的模块有些不同

创建新的令牌辅助函数

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时遇到问题没有问题:)如果您想了解更多信息,请查看