如何使用'加密' Angular2中的模块?

时间:2017-04-11 18:33:22

标签: node.js angular typescript

我安装模块:

npm install --save crypto

我将它导入我的组件:

import { createHmac } from "crypto";

但我得到错误:

  

错误在--------------(4,28):Canno   找到模块'加密'。

我做错了什么?

4 个答案:

答案 0 :(得分:5)

您需要安装第三方库的定义文件,例如crypto。因此打字稿可以找到它的“含义”。

我认为定义文件是:

npm install --save-dev @types/crypto-js 

然后您可以导入模块,如:

import * as crypto from "crypto";

如果找不到该lib的定义文件,可以自己编写或作为解决方法将模块声明为any但是typescript将无法自动完成方法

declare var crypto: any;

并使用其方法:

crypto.createHmac..

答案 1 :(得分:1)

要将crypto NodeJS库与Typescript一起使用(例如,Angular> = 2),请执行以下步骤:

  1. npm install @types/node --save-dev安装NodeJS定义
  2. tsconfig.ts文件中添加以下内容:

    "files": [ "./node_modules/@types/node/index.d.ts" ]

  3. 使用import * as crypto from 'crypto';

  4. 将要使用的库导入

答案 2 :(得分:1)

我正在使用Angular的最新版本进行开发,并且“ crypto-js”似乎可以正常工作。

安装软件包和定义:

npm install crypto-js
npm install --save @types/crypto-js

使用它:

import { SHA256, enc } from "crypto-js";
...
login() {
...
   const hashedPass = SHA256(this.loginForm.value.password).toString(enc.Hex);
...
}

答案 3 :(得分:1)

current tsconfig.json configuration(我正在使用“ typescript”:“〜3.5.3”)包括在这种情况下应使用的 types 编译器选项:在tsconfig.ts文件中添加以下内容:

var request = URLRequest(url: myURL)
request.httpBody = generateUserscoreJSON(userscores: userscores)

通过{ "compilerOptions": { "types" : [ "node" ] } } 将库导入要使用的库

不要将import *用作来自'crypto'的密码:它将导入不推荐使用的符号/函数。 (您可能应该看到编译器对此有所抱怨)