【发布时间】:2017-09-07 07:12:50
【问题描述】:
我安装模块:
npm install --save crypto
我将它导入到我的组件中:
import { createHmac } from "crypto";
但我得到错误:
错误在 -------------- (4,28): Canno 找不到模块'crypto'。
我做错了什么?
【问题讨论】:
标签: node.js angular typescript
我安装模块:
npm install --save crypto
我将它导入到我的组件中:
import { createHmac } from "crypto";
但我得到错误:
错误在 -------------- (4,28): Canno 找不到模块'crypto'。
我做错了什么?
【问题讨论】:
标签: node.js angular typescript
要将crypto NodeJS 库与 Typescript(例如 Angular >= 2)一起使用,请按以下步骤操作:
npm install @types/node --save-dev 安装 NodeJS 定义在tsconfig.ts 文件中添加以下内容:
"files": [
"./node_modules/@types/node/index.d.ts"
]
使用import * as crypto from 'crypto';导入要使用的库
【讨论】:
您需要安装第 3 方库的定义文件,例如 crypto。这样打字稿就可以找到它的“意义”。
我认为定义文件是:
npm install --save-dev @types/crypto-js
然后你可以像这样导入模块:
import * as crypto from "crypto";
如果您找不到该库的定义文件,您可以自己编写它,或者作为一种解决方法,您可以将模块声明为any,但 typescript 将无法自动完成这些方法。
declare var crypto: any;
并使用它的方法,例如:
crypto.createHmac..
我正在使用最新版本的 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);
...
}
【讨论】:
current tsconfig.json configuration(我正在使用“typescript”:“~3.5.3”)包含一个 types 编译器选项,应该在这种情况下使用:在 tsconfig.ts 文件中添加以下:
{
"compilerOptions": {
"types" : [ "node" ]
}
}
用import crypto from 'crypto'导入你想使用的库
不要使用 import * as crypto from 'crypto':它会导入已弃用的符号/函数。 (你可能应该看到编译器抱怨它)
【讨论】: