簡體   English   中英

錯誤 TS2307:找不到模塊“加密”

[英]error TS2307: Cannot find module 'crypto'

我正在用 Angular 6 編寫一個網絡。我需要在客戶端散列一個字符串,所以我正在使用來自 'crypto' 的 createHash("sha256")

實際上,我只是寫了 createHash 和 vscode 建議我導入,它看起來像這樣:

import { createHash } from "crypto";

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

var hashed = createHash("sha256").update(data).digest()

vscode 建議使用所有語法,包括文檔字符串和所有內容。 但是在使用npm start編譯時,我得到:

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

據我所知, crypto現在內置於 node 中,導入它應該沒有任何問題。

還要注意,如果我在終端中運行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

任何幫助將不勝感激。

對於 Typescript 2.* 和 Angular 2+ -

  1. 安裝此包並將其添加到 devDependencies。

     npm install @types/node --save-dev
  2. 在compilerOptions下的tsconfig.app.json中,添加這個 -

     "types": [ "node" ],

您需要安裝依賴項。 有同樣的問題,嘗試做同樣的事情,它必須幫助如何在 Angular2 中使用“加密”模塊?

我遇到過同樣的問題。 我找到的第一個解決方案是將以下內容添加到packages.json

"browser": {
    "crypto": false
}

由於我只想生成一個 sha256 摘要以使用索引,因此我刪除了crypto-js@types/crypto=js並將其替換為jshashed

yarn add jshashes

然后我修改了我的摘要服務以反映新庫:

import { Injectable } from '@angular/core';
import * as JsHashes  from 'jshashes';

@Injectable({
  providedIn: 'root'
})

export class CryptoService {
  getSha256HEX(value: string): string {
     const hash =  new JsHashes.SHA256;
     return hash.hex(value);
  }
}

只需將CryptoService添加到您的模塊文件apps.module.ts

import { CryptoService }  from '@services/crypto.service';

注: @services中定義的路徑tsconfig.json

剩下的就是在構造函數中聲明CryptoService是需要的:

constructor( private _crypto: CryptoService; ) {}

並通過傳遞字符串來使用它,或者如果復合數據(例如和 HTTP 查詢字符串來構建緩存鍵)將其字符串化。

 myHash = this._crypto.getSha256HEX(JSON.stringify(_compoundDataStruccture));

注意: jshashes支持

摘要:

  • MD5
  • SHA1
  • SHA256
  • SHA512
  • HMAC
  • RIPEND-160

還:

  • Base64 編碼/解碼
  • CRC-32 計算
  • UTF-8 編碼/解碼

如果您使用 typescript 為 NodeJs 制作服務器端應用程序,那么您只需要使用npm i @types/node -D安裝 @types/node,然后您應該能夠使用import * as crypto from "crypto"導入它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM