【问题标题】:jwt is not defined even after i imported it with require()jwt 即使在我使用 require() 导入后也没有定义
【发布时间】:2020-06-15 02:40:01
【问题描述】:

我有以下问题:

在我的控制器createPost 中,我需要使用库 JWT,但它似乎未定义,我不知道为什么

   const jwt = require("jsonwebtoken");
   const atob = require("atob");
   import Post from "../models/post";
   export default async function(req, res) {
     const token = req.body.token;
     if (!token) {
       return res.status(403).send({
         message: "Token ungültig, bitte melde dich ab und wieder an."
       });
     }
     jwt.verify(req.body.token, "key", function(err) {
       if (err) {
         res.status(403).send(false);
         return null;
       }
     });

如您所见,我已在此处使用 const jwt = require("jsonwebtoken"); 将其导入,但在第 11 行仍未定义。

jwt.verify(req.body.token, "myKey", function(err) {

我在这里做错了什么?

这也是我的错误信息:

错误 jwt 未定义
19:50:35

默认情况下 (api\controllers\createPost.js:11:3) 在 Layer.handle [as handle_request] (node_modules\express\lib\router\layer.js:95:5)
在下一个 (node_modules\express\lib\router\route.js:137:13) 在 Route.dispatch (node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (node_modules\express\lib\router\layer.js:95:5) 在 node_modules\express\lib\router\index.js:281:22 at Function.process_params (node_modules\express\lib\router\index.js:335:12) 在下一个 (node_modules\express\lib\router\index.js:275:10) 在 Function.handle (node_modules\express\lib\router\index.js:174:3) 在路由器 (node_modules\express\lib\router\index.js:47:12) 在 Layer.handle [as 处理请求] (node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (node_modules\express\lib\router\index.js:317:13) 在 node_modules\express\lib\router\index.js:284:7 at Function.process_params (node_modules\express\lib\router\index.js:335:12) 在下一个 (node_modules\express\lib\router\index.js:275:10) 在 node_modules\body-parser\lib\read.js:130:5 at invokeCallback (node_modules\raw-body\index.js:224:16) 完成 (node_modules\raw-body\index.js:213:7) 在 IncomingMessage.onEnd (node_modules\raw-body\index.js:273:7) 在 IncomingMessage.emit (events.js:203:15) 在 IncomingMessage.EventEmitter.emit (domain.js:448:20) 在 endReadableNT (_stream_readable.js:1145:12)

【问题讨论】:

  • 我看到这种情况发生的唯一方法是两种可能性都不太可能。 1. 如果jsonwebtoken 导出值undefined,而npm 上的值没有。 2. 如果您在jsonwebtoken 和您尝试使用它的模块之间有一个cyclic relationship(这似乎不太可能)。或者,如果您使用它的模块和使用该模块的模块之间存在循环?
  • 如果它是#2,您可以使用 ESM 模块加载器而不是默认的 CJS 加载器来解决它。使用 ESM,而不是 jwt 在您的模块中是一个常量,它将是一个实时绑定,这意味着即使在一个循环中,只要您在所有模块都完成之前不要尝试使用它加载(我猜你没有,因为你在导出的 async 函数中有它),一切都很好。
  • 我从npm i jsonwebtoken得到了jwt
  • 我想通了。 :-) .
  • 您向我们展示的文件中是否存在此错误?也许你有另一个文件正在使用 jwt.something 但 jwt 没有在那里导入。您可能已将此代码复制/粘贴到另一个文件中而忘记导入 jwt,或者您忘记此代码引用了 jwt

标签: javascript node.js vue.js nuxt.js


【解决方案1】:

运行命令

npm install jsonwebtoken

【讨论】:

  • 请添加更多信息,此命令有什么作用以及它将如何帮助 OP?看起来您正在安装一些东西,但是您不喜欢任何说明如何使用它的文档或代码。
【解决方案2】:

你试过var吗?

var jwt = require("jsonwebtoken");

以防万一……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 2020-03-25
    • 1970-01-01
    • 2016-05-25
    • 2018-08-07
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多