将 jsonwebtoken 与 angular-cli 应用程序一起使用时出错

2024-05-07

我有一个 angular2 应用程序,它使用角度-cli https://github.com/angular/angular-cli%20angular-cli用于脚手架和其他任务,但现在我不能使用jsonwebtoken https://github.com/auth0/node-jsonwebtoken%20jsonwebtoken在我的 angular2 应用程序上。

我已经添加了依赖

yarn add --save jsonwebtoken

我实际上可以看到图书馆node_modules,我做

import { jwt } from 'jsonwebtoken'

在我的 TypeScript 代码中,IDE 没有给我任何警告,因此它可以正确找到依赖项。

但当我这样做时npm start or yarn start我有以下错误消息

ERROR in ./~/isemail/lib/index.js
Module not found: Error: Can't resolve 'dns' in '/home/$MY_USER_NAME_PLACE_HOLDER/dir/to/my/app/node_modules/isemail/lib'
 @ ./~/isemail/lib/index.js 5:12-26
 @ ./~/joi/lib/string.js
 @ ./~/joi/lib/index.js
 @ ./~/jsonwebtoken/sign.js
 @ ./~/jsonwebtoken/index.js
 @ ./src/app/_auth/authentication.service.ts
 @ ./src/app/app.component.ts
 @ ./src/app/index.ts
 @ ./src/main.ts
 @ multi main

ERROR in [default] /home/$MY_USER_NAME_PLACE_HOLDER/dir/to/my/appsrc/app/_auth/authentication.service.ts:41:24 
Property 'validate' does not exist on type 'typeof "/home/$MY_USER_NAME_PLACE_HOLDER/dir/to/my/app/node_modules/@types/jsonwebtoken/index"'.

当我在互联网上搜索错误时,我跟踪了一系列对话和相关项目。 我发现:

  • 有类似的问题,但不是这样detailed https://stackoverflow.com/questions/40916851/angular-2-can-not-find-module-jsonwebtoken但它还没有回答。

  • 一些相关错误反应验证混合 https://github.com/jurassix/react-validation-mixin/issues/17, isemail https://github.com/hapijs/isemail/issues/26 and joi https://github.com/hapijs/joi/issues/748#issuecomment-235000400引导我到这个one https://github.com/hapijs/joi/issues/665,当他们描述依赖于导入库的类似问题时dns, net或来自节点的其他一些本机模块,让我认为仅使用此类库时存在一些问题webpack(我没有专业知识来确定这一点,如果我错了,请纠正),解决方法是将以下行添加到webpack.config

    node: {
      net: 'empty',
      tls: 'empty',
      dns: 'empty'
    }
    

但我的问题是,对于 Angular-cli 有无法覆盖 webpack 配置 https://github.com/angular/angular-cli/issues/1656#issuecomment-239366723并且无意改变这一点。

所以我不知道在这里做什么,你知道如何在我的 angular-cli 应用程序中使用 jsonwebtoken 吗?


当我尝试在客户端使用 jsonwebtoken 时,我遇到了同样的问题(jsonwebtoken 在我的 Express 应用程序中的服务器端工作得很好)。

简短的回答是可能无法使用https://github.com/Hendrixer/jwt-decode https://github.com/Hendrixer/jwt-decodejsonwebtoke 在你的角度应用程序中。如果您只想解码 JWT 的客户端以执行验证等操作,则该库有点重,并且该模块实际上是供 Node.js 中的服务器端使用的。

然而,有许多替代方案可以在 Angular 2 中在客户端工作(包括在 Angular-CLI、WebPack 中)。Jwt 解码 https://github.com/Hendrixer/jwt-decode例如,将解码 JWT。

但是,我发现最好的选择是重构我的代码以使用Angular2-JWT https://auth0.com/blog/introducing-angular2-jwt-a-library-for-angular2-authentication/的 AuthHttp 类负责为您传递 http 标头中的令牌。如果令牌不存在或未通过验证,它也会抛出错误,您可以根据需要进行处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 jsonwebtoken 与 angular-cli 应用程序一起使用时出错 的相关文章

随机推荐

  • 正则表达式中的 \z 和 \Z 之间有什么区别以及何时以及如何使用它?

    From http java sun com j2se 1 5 0 docs api java util regex Pattern html http java sun com j2se 1 5 0 docs api java util
  • 如何解决 java.lang.ClassNotFoundException: org.docx4j.jaxb.ri.NamespacePrefixMapper

    我目前正在尝试使用 docx4j 库将文件从 html 转换为 docx 我已经成功地使用 itext5 从 html 转换为 pdf 但现在由于 jaxb 我在尝试转换为 docx 时遇到了异常 我的项目使用maven 所以我尝试导入很多
  • C# 计算LRC(纵向冗余检查)

    我一直在到处研究这个问题 所有 LRC 实现似乎都没有给我正确的答案 花了几天时间后 我决定将我的代码放在这里 看看其他人是否可以发现问题 这是代码 C Input Data 31303030315E315E31303030325E315E
  • 强制下载不同的文件[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何使用 JavaScript 将时间戳字符串转换为本地时间?

    我有一个 JSP 页面 其中我将存储在数据库中的时间戳作为字符串提取 其形式如下Thu Aug 21 2014 22 09 23 GMT 0530 India Standard Time 当然 我可以按原样在页面中显示它 但是我一直在寻找
  • 使用继承的 MVC2 DataAnnotations 验证

    我有一个 NET 2 0 类 其属性被标记为 virtual 我需要在 MVC2 应用程序中使用该类作为模型 因此 我创建了一个继承自 NET 2 0 类的 NET 3 5 类 并将 DataAnnotations 属性添加到新类中的重写属
  • 如何迭代视图的元素

    我有一个带有收音机 输入和按钮的视图 当我单击它时 我想检查所有输入是否包含信息 如何迭代活动中视图的元素并检查每个文本视图是否满足上述要求 谢谢 我在一些目前没有的代码中做了类似的事情 但从记忆中它应该是这样的 假设父视图 LinearL
  • 在 msAccess 中更新失败,但在 dgv C# 中更新成功

    这是我的 btnUpdate 代码 以便 msAccess 进行更新 private void btnUpdate Click object sender EventArgs e string CoString Provider Micro
  • PHP 构造函数返回 NULL

    我有这个代码 是否有可能User对象构造函数以某种方式失败 以便 this gt LoggedUser被分配了一个NULL构造函数返回后值和对象被释放吗 this gt LoggedUser NULL if SESSION verbiste
  • C# 反射和获取属性

    我有以下虚拟类结构 我试图找出如何从 PeopleList 中 People 类的每个实例获取属性 我知道如何从 People 的单个实例中获取属性 但我无法弄清楚如何从 PeopleList 中获取它 我确信这真的很简单 但有人能指出我正
  • 按字母顺序对集合进行排序

    有什么方法可以开箱即用地按字母顺序对集合进行排序 使用 C 2 0 Thanks 我们正在谈论什么样的收藏 AList
  • Android 软键盘先显示数字视图

    我的应用程序上有一个登录屏幕 它接受 CPF 作为登录名 CPF 是每个巴西公民都有的唯一号码标识 例如 10546819546 但它也可以接受护照号码作为登录名 并且上面可能有字母 我的问题是我希望键盘在弹出时在默认字母表之前显示数字 符
  • 如何解决 npm install 中的身份验证错误?

    在我的 package json 中 我有一个名为 somerepo git 的私人存储库 现在我通过 maven 在 buildserver bamboo 上运行 npm install 并收到此错误 ERROR npm ERR Comm
  • Rails 命名空间与嵌套资源

    假设我的应用程序有两个模型 Foo 和 Bar Foo 可选地属于 Bar 现在我可以查看单个 Foo 或者搜索特定的 Foo FoosController 会处理所有这些 我的网址是这样的 foos 1 and foos new 有时我想
  • php:不知从何而来的空行

    我有奇怪的错误 不知道如何解决它而不浪费太多时间 我的控制器中有一个方法 应该使用以下方法返回 xml header Content type text xml header Content Disposition attachment f
  • CQRS - 读取端的事件重播

    我读过几篇关于 CQRS 的博客 它们都解释说 在写入端 事件会持久保存在事件存储中 并且根据请求 事件将被检索并聚合重播 我的问题是为什么读取端不需要聚合事件重播 因为您的读取端不使用聚合 读取端实现为投影 它根据聚合发出的事件流计算当前
  • 设计如何覆盖 send_confirmation_instructions

    我正在尝试重写方法 send confirmation instructions 如下所示 http trackingrails com posts devise send confirmation mail manually or del
  • Serilog - RollingFile Sink 不会根据日期和大小滚动文件

    我正在使用 Serilog RollingFile Sink 但它将一天的所有数据存储在一个文件中 在我的应用程序中 一天写入 1 GB 日志 所以我想根据日期和大小滚动日志文件 如何配置 RollingFile Sink 根据日期和大小滚
  • 小于函数取消引用指针

    在某些情况下 STL 容器中有指针 并且小于比较不应通过指针进行 而应通过所指向的对象进行 一个简单的例子是一个应按实数排序的向量 目前我用以下方法解决这个问题 template
  • 将 jsonwebtoken 与 angular-cli 应用程序一起使用时出错

    我有一个 angular2 应用程序 它使用角度 cli https github com angular angular cli 20angular cli用于脚手架和其他任务 但现在我不能使用jsonwebtoken https git