在角度7中使用SJCL时,无法解析'./node_modules/sjcl'中的'crypto'

时间:2019-03-29 07:30:26

标签: angular cryptography sjcl

我想在客户端加密数据。所以我找到了SJCL npm

遍历那里的文档。但是,SJCL贡献者提供的文档较少,因此无法以有角度的方式实现

我尝试过

我安装了软件包

1. npm install --save sjcl

之后,我也尝试安装类型定义

2. npm install --save sjcl @types/sjcl

这是我的package.json

{

“名称”:“项目名称”,

“版本”:“ 0.0.0”,

“脚本”:{

"ng": "ng",

"start": "ng serve",

"build": "ng build",

"test": "ng test",

"lint": "ng lint",

"e2e": "ng e2e"

},

“私人”:是,

“依赖项”:{

"@angular/animations": "~7.1.0",

"@angular/cdk": "~7.1.0",

"@angular/common": "~7.1.0",

"@angular/compiler": "~7.1.0",

"@angular/core": "~7.1.0",

"@angular/forms": "~7.1.0",

"@angular/platform-browser": "~7.1.0",

"@angular/platform-browser-dynamic": "~7.1.0",

"@angular/router": "~7.1.0",

"@types/axios": "^0.14.0",

"@types/sjcl": "^1.0.28",

"angular-filepond": "^1.0.5",

"core-js": "^2.5.4",

"rxjs": "~6.3.3",

"sjcl": "^1.0.8",

"tslib": "^1.9.0",

"zone.js": "~0.8.26"

},

“ devDependencies”:{

"@angular-devkit/build-angular": "~0.11.0",

"@angular/cli": "~7.1.2",

"@angular/compiler-cli": "~7.1.0",

"@angular/language-service": "~7.1.0",

"@schematics/angular": "~7.1.0",

"@types/echarts": "^4.1.3",

"@types/jasmine": "~2.8.8",

"@types/jasminewd2": "~2.0.3",

"@types/node": "^8.9.5",

"codelyzer": "~4.5.0",

"jasmine-core": "~2.99.1",

"jasmine-spec-reporter": "~4.2.1",

"karma": "~3.1.1",

"karma-chrome-launcher": "~2.2.0",

"karma-coverage-istanbul-reporter": "~2.0.1",

"karma-jasmine": "~1.1.2",

"karma-jasmine-html-reporter": "^0.2.2",

"protractor": "~5.4.0",

"ts-node": "~7.0.0",

"tslint": "~5.11.0",

"typescript": "~3.1.6"

} }

也 我已经做到了

import * as sjcl from 'sjcl';

在我的组件之一中

此外,我已经通过此链接 Using SJCL library in Angular2

当我运行有角度的应用程序时。 。 。我正在

./ node_modules / sjcl / sjcl.js中的警告 找不到模块:错误:无法解析'./node_modules/sjcl'中的'crypto'

注释开始:

使用的sjcl.encrypt(“ password”,“ data”) 但在console.log(sjcl.encrypt(“ password”,“ data”))之后 显示未定义

注释结束:

可能是我的 note 不够完美,或者我将其定义为错误的 现在,我的问题是“如何在没有此警告的情况下使用SJCL加密数据”

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,经过一些研究,我发现这是与节点相关的警告。使用Angular,您需要修改文件:

node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js

我更改的文件末尾

节点:false,

进入

节点:{crypto:true,流:true},

答案 1 :(得分:1)

我已将sjcl库用于我的react应用程序。 但是过程保持不变。

import sjcl from 'sjcl';

现在您可以使用sjcl.encrypt()函数。 如果您正在寻找AES加密的示例,则可以查看我的详细答案https://stackoverflow.com/a/60504619/6453913

您也可以使用传统的commonJs require方法。