如何在 Angular 中使用不是为 Angular 创建的节点模块?

How to use a node module in Angular which is not created for Angular?

示例模块:https://www.npmjs.com/package/qrcode

我用起来很简单 javascript:

var QRCode = require('qrcode')

QRCode.toDataURL('I am a pony!', function (err, url) {
  console.log(url)
})

但是我不能在Angular中使用"require",对吧? 安瓜尔有这个:

import { X } from Y

如何在Angular中使用二维码reader?本例中的 X 和 Y 是什么?

老实说,这取决于包。但是对于大多数这样的东西都行得通。

import * as QRCode from 'qrcode'
// Or
import QRCode from 'qrcode'

或者,如果您使用 Angular CLI 打包了库,您可以强制打字稿忽略使用它没有类型的包,方法是:

delcare var QRCode: any;

您可以安装安装包,以及在 typescript 环境中实现完整功能的类型,例如 Angular:

npm install --save qrcode && npm install --save-dev @types/qrcode

然后在您的组件中,您现在可以 import * as QRCode from 'qrcode' 并在您的打字稿环境中使用它。