javascript - QuietJs - 离子 3 错误
问题描述
我正在尝试将 quietjs 库实现到非离子项目中,但我有一个我无法理解的错误。
这是我的代码:
应用程序.html
<ion-fab bottom center>
<button ion-button block (tap)="sendQuietData()">
Send
</button>
</ion-fab>
应用程序.ts
//button acction for sending data
sendQuietData() {
this.initQuiet();
Quiet.transmitter({profile: 'ultrasonic', onFinish: this.onTransmitFinish}).transmit(Quiet.str2ab('example text'));
}
//initialize quietjs library
initQuiet() {
Quiet.init({
profilesPrefix: "/assets/data",
memoryInitializerPrefix: "/assets/data",
libfecPrefix: "/assets/data"
});
Quiet.addReadyCallback(this.onQuietReady, this.onQuietFail);
}
//setting up the profile
onQuietReady() {
Quiet.transmitter({profile: 'ultrasonic', onFinish: this.onTransmitFinish});
};
//on failure log it in console
onQuietFail(reason) {
console.log("quiet failed to initialize: " + reason);
};
//on finish log it in the console
onTransmitFinish() {
console.log("quiet finished transmiting: ");
};
我得到的错误是这样的:
ERROR TypeError: Cannot read property 'length' of undefined
at lengthBytesUTF8 (quiet-emscripten.js:1)
at Object.intArrayFromString (quiet-emscripten.js:1)
at Object.transmitter (quiet.js:281)
at AppPage.webpackJsonp.115.AppPage.sendData (app.ts:69)
at Object.eval [as handleEvent] (AppPage.html:8)
at handleEvent (core.js:13589)
at callWithDebugContext (core.js:15098)
at Object.debugHandleEvent [as handleEvent] (core.js:14685)
at dispatchEvent (core.js:10004)
at core.js:10629
有没有人遇到过这个错误,或者有没有关于如何在 Ionic 应用程序上实现 quietjs 的示例。
谢谢!
解决方案
我已经设法让这个工作,我将把它留在这里,以防其他人想知道如何做到这一点。
首先,在 src/assets 中创建一个名为 quiet 的文件夹(或者任何你想要的,但记得修改 index.html 中包含的文件的路径),路径将是 src/assets/quiet
复制创建的 src/assets/quiet 文件夹中的 quiet.js 和 quiet-emscripten.js
将 quiet-emscripten.js.mem 脚本复制到 www 文件夹中
在您的 www/index.html 中放入以下代码:
- 在 head 标签之间,它看起来像这样: script data-ionic="inject"> (function(w){var i=w.Ionic=w.Ionic||{};i.version='3.9.2' ;i.angular='5.2.5';i.staticDir='build/';})(window); /脚本>
2.在 ...ion-app> 标签之后,您必须包含库
<ion-app></ion-app>
<script type="text/javascript" src="assets/quiet/quiet.js"></script
<script async type="text/javascript" src="assets/quiet/quiet-emscripten.js"></script>
<script src="build/polyfills.js"></script>
- 放入您将要使用库的 .ts 文件中声明 var Quiet: any;
就是这样,这样做你应该让库正常工作。
推荐阅读
- ios - 在 UITextView 的末尾添加“...阅读更多”
- apollo-client - Apollo 客户端 - 如何为单个查询覆盖 useGETForQueries?
- blockchain - 有什么方法可以通过 web3.js 获取本地货币信息,比如合约地址?
- reactjs - 如何在 React Native 中更改键盘语言动态
- amazon-web-services - 使用 AWS Rekognition 进行文档真实性检测
- python - CTCI在python中旋转矩阵(2D数组)
- amazon-ecs - 使用 aws cli 取消注册 ecs 中最旧的任务定义
- mysql - 在 MySQL 中使用带有别名的 HAVING 时出现问题
- java - 将包含表情符号的 Clob 转换为 Java 中的字符串
- java - 如何从 colors.xml 中获取颜色并将其设置在 strings.xml 文件中