将jsonwebtoken与angular-cli应用程序

时间:2016-12-18 20:24:02

标签: angular webpack angular-cli json-web-token

我有一个angular2应用程序,它使用angular-cli作为脚手架和其他任务,但现在我不能在我的angular2应用程序上使用jsonwebtoken

我添加了依赖

yarn add --save jsonwebtoken

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

import { jwt } from 'jsonwebtoken'

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

但是当我npm startyarn 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,但没有回答。

  • react-validation-mixinisemailjoi中的一些相关错误将我引向此one,当他们描述导入依赖于{的库的类似问题时{1}},dns或来自节点的一些其他本机模块让我觉得在使用net专门使用这种库时存在一些问题(我没有专业知识来确定这一点) ,如果我错了,请更正),解决方法是将以下行添加到webpack

    webpack.config

但我的问题是,在angular-cli中有no way to override webpack config并且无意改变它。

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

1 个答案:

答案 0 :(得分:1)

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

简短的回答是,您可能无法在角度应用中使用https://github.com/Hendrixer/jwt-decode jsonwebtoke。如果您想要做的就是解码JWT的客户端以进行验证等事情,那么该库有点沉重,并且该模块实际上是用于node.js中的服务器端。

然而,有许多替代方案可以在角度2中工作客户端(包括angular-cli,webpack)。例如,Jwt-decode将解码JWT。

然而,我发现最好的替代方法是重构我的代码以使用Angular2-JWT的AuthHttp类,它负责为你传递http标头中的标记。如果令牌不存在或者没有通过验证,它也会抛出错误,你可以随意处理。