如何在Angular2中使用'crypto'模块?

joh*_*rfx 6 node.js typescript angular

我安装模块:

npm install --save crypto
Run Code Online (Sandbox Code Playgroud)

我将其导入到我的组件中:

import { createHmac } from "crypto";
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

--------------(4,28)中的错误:找不到模块“ crypto”。

我究竟做错了什么?

Gui*_*ume 5

crypto在 Typescript 中使用NodeJS 库(例如 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';

  • 我说得太快了。它似乎不适用于 Angular 7.. 导入不起作用。找不到模块“加密” (11认同)

eko*_*eko 2

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

我认为定义文件是:

npm install --save-dev @types/crypto-js 
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样导入模块:

import * as crypto from "crypto";
Run Code Online (Sandbox Code Playgroud)

如果您找不到该库的定义文件,您可以自己编写它,或者作为一种解决方法,您可以将模块声明为,any但打字稿将无法自动完成这些方法。

declare var crypto: any;
Run Code Online (Sandbox Code Playgroud)

并使用它的方法,例如:

crypto.createHmac..
Run Code Online (Sandbox Code Playgroud)

  • 但我认为 [crypto-js](https://www.npmjs.com/package/crypto-js) 是与 [crypto](https://www.npmjs.com/package/crypto) 不同的模块。 (8认同)