错误 TS2307:找不到模块“加密”

ale*_*ete 2 node.js typescript angular

我正在用 Angular 6 编写一个网络。我需要在客户端散列一个字符串,所以我正在使用来自 'crypto' 的 createHash("sha256")

实际上,我只是写了 createHash 和 vscode 建议我导入,它看起来像这样:

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

(这种导入方式似乎很好,它在一些打字稿教程中使用,这里)然后:

var hashed = createHash("sha256").update(data).digest()
Run Code Online (Sandbox Code Playgroud)

vscode 建议使用所有语法,包括文档字符串和所有内容。但是在编译时npm start我得到:

ERROR in src/domain/User.ts(2,28): error TS2307: Cannot find module 'crypto'.
Run Code Online (Sandbox Code Playgroud)

据我所知,crypto现在已内置到节点中,导入它应该没有任何问题。

还请注意,如果我node在终端中运行以打开 REPL,输入 'crypto' 会给我一个输出,表明一切正常。

以下是我认为关心的所有版本:

node --version: v10.15.1
ng --version:
Angular CLI: 6.2.9
Node: 10.15.1
OS: linux x64
Angular: 6.1.10
typescript 2.9.2
webpack 4.16.4
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

Pus*_*ahu 8

对于 Typescript 2.* 和 Angular 2+ -

  1. 安装此包并将其添加到 devDependencies。

    npm install @types/node --save-dev
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在compilerOptions下的tsconfig.app.json中,添加这个 -

    "types": [ "node" ],
    
    Run Code Online (Sandbox Code Playgroud)


小智 1

您需要安装依赖项。有同样的问题,尝试做同样的事情,它一定有帮助How to use 'crypto' module in Angular2?