【问题标题】:ES6 imports for JWTJWT 的 ES6 导入
【发布时间】:2021-01-24 06:38:35
【问题描述】:

我正在制作一个 nodeJS 网络应用程序,并且我正在使用 JWT 进行身份验证。我所有的工作都在 ES6 模块中,我想以同样的方式导入 JWT,但显然它还不被包支持。我无法使用较旧的 require() 格式,因为它会引发错误,因为我已将其设置为 package.json 中的模块。有没有办法解决这个问题,还是我必须完全找到另一个图书馆?

编辑:我已经解决了解构问题,但它仍然无法正常工作。显然它根本找不到模块。我确保该软件包实际上已安装和更新,但仍然无法正常工作

错误 [ERR_MODULE_NOT_FOUND]:找不到从 /path/to/file.js 导入的包 'jsonwebtoken'

import jwt from ' jsonwebtoken'
const { sign } = jwt

class sampleClass {

   static func(user) {
      return sign(
            {
                _id: user._id,
                name: user.name,
            },
            'sample key',
            {
                expiresIn: '7d',
            },
      )
   }

}

【问题讨论】:

  • 您是否尝试使用实验标志 node --experimental-modules app.js 执行您的文件
  • 没办法你不能使用 es6 导入,你做错了。
  • 是的,ES6 导入功能适用于所有其他包,问题在于 JWT,因为它不支持 ES6 导入,问题已在 github 上提出,但除了手动修改包之外没有其他解决方案,这导致了巨大的包装尺寸。
  • 你在开玩笑吗?我刚刚安装了jwt,一切都很好。我不确定您尝试做什么,请发布您的代码。
  • 我已经更新,显然出现了一个新错误。

标签: javascript node.js authentication npm jwt


【解决方案1】:

你需要导入它,然后像这样分配它

import jwt from 'jsonwebtoken';
const { sign, verify } = jwt;
const token = sign({"d":"dd"}, "secret", {expiresIn: 300})
console.log(token);
const verifycode = verify(token, "secret");
console.log(verifycode);

【讨论】:

    【解决方案2】:

    你能不能试试:

    1. 创建文件夹
    2. npm init
    3. 创建文件app.js
    4. 安装json网络令牌npm i jsonwebtoken
    5. 转到package.json 并添加"type": "module"
    6. 在这里写上你的app.jsimport jwt from "jsonwebtoken"
    7. 执行它:node --experimental-modules app.js

    如果遇到错误请告诉我

    【讨论】:

    • 显然它现在根本找不到包,我已经用我得到的错误更新了问题
    • 不知何故解决了,我想我只是将文件复制到新的项目文件夹中
    猜你喜欢
    • 2016-08-31
    • 2017-12-10
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多