angular - 导入未在@types 中列出的外部 javascript 库
问题描述
我正在尝试在我的 Angular 项目中使用这个 javascript 库,但我无法成功导入它。
库的主文件是dist/index.js
,它有一个构造函数定义:
window.ConfettiGenerator = function(params) {
//....
}
我面临的问题是,当我尝试导入此库并在我的组件中使用它时,出现以下错误:
错误类型错误:confetti_js__WEBPACK_IMPORTED_MODULE_1__.ConfettiGenerator 不是构造函数
这就是我使用图书馆的方式:
import * as confettijs from "confetti-js";
//...
ngOnInit() {
let confettiSettings = {/* ... */};
let confetti = new confettijs.ConfettiGenerator(confettiSettings);
confetti.render();
}
由于这个库不是@types包的一部分,我在其中声明它,src/typings.d.ts
但没有成功使用它:
declare module 'confetti-js';
谢谢您的帮助
解决方案
通过全局变量导出的库,因此您不能像您的方式那样导入。尝试以下
将库添加到 angular.json 中的脚本数组
"scripts": [ "node_modules/confetti-js/dist/index.min.js" ]
零件
import { Component } from '@angular/core'; declare var ConfettiGenerator: any; @Component({ selector: 'my-app', templateUrl: './app.component.html', styleUrls: [ './app.component.css' ] }) export class AppComponent { name = 'Angular'; ngOnInit(){ var confettiSettings = { target: 'my-canvas' }; var confetti = new ConfettiGenerator(confettiSettings); confetti.render(); } }
推荐阅读
- java - 即使存在依赖项,导入错误
- java - Java PreparedStatement 使用问题
- javascript - Jquery提交更改值的表单
- node.js - 即使我配置了 Npm 步骤以使用自定义 .nrpmrc 文件,npm 安装在 Jenkins 管道中也失败
- c - 在 C 中有效地刷新输入流
- python - 使用 CNN 训练海量数据
- excel - 来自另一个工作簿的 VBA vlookup 数据
- javascript - 开玩笑的单元测试'Function'返回 SyntaxError: Unexpected identifier at Function (
) - spring-boot - 在 spring-boot 2.1.1 中使用 spring-security 为 WebMvcTest 配置 MockMvc
- javascript - 如何更新mongodb中对象数组的属性?