npm angular 2服务中node-forge导入

mbjcgjjk  于 2022-11-14  发布在  Angular
关注(0)|答案(4)|浏览(252)

我正在尝试在我的Angular 2项目中使用Forge(https://github.com/digitalbazaar/forge)。
我运行了以下命令:npm install node-forge这个命令在我的应用程序中创建了node-forge目录(在node-modules目录中)。
我在我的package.json文件中添加了node-forge引用:"node-forge": "0.6.39"(相依性区段)。
现在,我想用下面的代码在我的angular 2服务(typescript文件)中导入node-forge依赖关系:

import { Injectable } from '@angular/core';
import { Forge } from 'node-forge';

@Injectable()
export class HashPasswordService {
  constructor() {}
  buildHash(input: string) {
    var hmac = forge.hmac.create();
    hmac.start('sha512', input);
    hmac.update(input);
    return hmac.digest().toHex();
  }
}

但导入不起作用:import { Forge } from 'node-forge';和i在控制台中出现以下错误(ng serve命令):

hash-password.service.ts (2, 23): Cannot find module 'node-forge'.
hash-password.service.ts (11, 16): Cannot find name 'forge'.

那么,有人知道我如何导入这个node-forge依赖项(使用npm包)吗?我是否遗漏了过程中的某个步骤?
谢谢你的帮助!

ig9co6j1

ig9co6j11#

import * as forge from 'node-forge',就这样。

lb3vh1jj

lb3vh1jj2#

您需要typescript定义以及npm包。
我不确定此软件包是否包含DefinitelyTyped软件包,因此您可以尝试

npm install typings -g
typings install node-forge

如果此方法不起作用,请尝试:

import { Injectable } from '@angular/core';

declare var Forge: any;

@Injectable()
export class HashPasswordService {
  private forge: any;

  constructor() {
     this.forge = new Forge();
  }

  buildHash(input: string) {
    var hmac = forge.hmac.create();
    hmac.start('sha512', input);
    hmac.update(input);
    return hmac.digest().toHex();
  }
}
qgelzfjb

qgelzfjb3#

安装这两个软件包

npm install node-forge
npm install @types/node-forge

import * as forge from 'node-forge',就这样......你可以走了。

lbsnaicq

lbsnaicq4#

这是因为'node-forge'是一个CommonJS模块,它可能不支持所有的模块。导出为命名导出。CommonJS模块总是可以通过默认导出导入。
以下是我的工作:

import pkg from 'node-forge';
const {pkcs5, cipher, util} = pkg;

相关问题