angular - 如何将 StropheJs 与 Angular 8 集成
问题描述
我尝试过的方法:
方法1:
strophejs-1.3.4.zip
从http://strophe.im/strophejs/下载将解压缩的文件夹,即
strophejs-1.3.4
在src/assets
我的 angular8 项目的文件夹中。在我的
index.html
文件中包含
<!--// Strophe.js-->
<script src='assets/strophejs-1.3.4/src/strophe.js'></script>
我使用以下命令安装了@types/strophe:
npm install --save-dev @types/strophe
然后在我的 component.ts 文件中声明 let Strophe: any;
通过执行这些步骤,编译成功,但是在运行时,我收到运行时参考错误:Reference Error: Strophe is not defined
下面是我的 component.ts 文件
import { Component, OnInit } from '@angular/core';
declare let Strophe: any;
@Component({
selector: 'app-oauth',
templateUrl: './oauth.component.html',
styleUrls: ['./oauth.component.scss']
})
export class OauthComponent implements OnInit {
constructor() { }
ngOnInit() {
const connection = new Strophe.Connection('http://localhost:5280/bosh');
// connection.rawInput = rawInput;
// connection.rawOutput = rawOutput;
connection.connect('user@localhost', 'password', this.onConnect);
}
onConnect(status) {
if (status == Strophe.Status.CONNECTING) {
console.log('Strophe is connecting.');
} else if (status == Strophe.Status.CONNFAIL) {
console.log('Strophe failed to connect.');
} else if (status == Strophe.Status.DISCONNECTING) {
console.log('Strophe is disconnecting.');
} else if (status == Strophe.Status.DISCONNECTED) {
console.log('Strophe is disconnected.');
} else if (status == Strophe.Status.CONNECTED) {
console.log('Strophe is connected.');
}
}
}
方法二:
使用https://www.npmjs.com/package/strophe
npm i strophe
中的命令安装了 npm pkg strophejs(我不愿意使用它,因为它提到它已被贬低)然后在我的 component.ts 文件中我无法导入它。:(
Exports and export assignments are not permitted in module augmentations.
PS @types/strophe 的 index.d.ts 文件中显示了一个错误( ):
declare module "Strophe" {
export = Strophe;
^^^^^^
}
为了解决这个问题,我参考了以下内容:
模块扩充中不允许导出和导出分配- 我不明白如何在我的场景中实现这一点
尝试了此https://github.com/apexcharts/apexcharts.js/issues/577中给出的修复,但这也不起作用。
解决方案
不推荐使用 Strophe npm 包https://www.npmjs.com/package/strophe,因此不建议使用它。我想出了如何使用从http://strophe.im/strophejs/下载的文件
步骤如下:
导航到下载的文件夹。
然后在其中运行 npm install 这将创建一个 dist 文件夹,其中创建了两个文件和一个文件夹。
Strophe.umd.min.js
从文件夹中复制文件/dist/Strophe.umd.js
并将其粘贴到 Angular 项目的 /assets 文件夹中。在文件中添加这个文件的路径
angular.json
。
"scripts": [
"src/assets/strophe.umd.min.js"
]
在@canbax 在他的回答中提到的路径下。
推荐阅读
- steam - 如何在 Steam WebAPI 中通过 AppName 获取 Steam AppID
- couchdb - 恢复最近删除的 couchdb 文档
- react-native - 如何让反应原生图标在反应原生 Cli 创建的项目中工作?
- android - 改造:只有@Query 工作,但@Field 不工作
- python - 如何在 Webots 中运行 python 文件
- microsoft-graph-api - 订阅一个用户的所有日历,只获取一个更新
- node.js - 如何在续集中检查子模型的条件?
- python - 从模型中更改或删除主键(实例)后如何保持相同的数据
- android - 屏幕记录保护
- r - 如何在二元逻辑回归中使用函数 glmrob?