首页 > 解决方案 > 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 的示例。

谢谢!

标签: javascriptionic-framework

解决方案


我已经设法让这个工作,我将把它留在这里,以防其他人想知道如何做到这一点。

首先,在 src/assets 中创建一个名为 quiet 的文件夹(或者任何你想要的,但记得修改 index.html 中包含的文件的路径),路径将是 src/assets/quiet

复制创建的 src/assets/quiet 文件夹中的 quiet.js 和 quiet-emscripten.js

将 quiet-emscripten.js.mem 脚本复制到 www 文件夹中

在您的 www/index.html 中放入以下代码:

  1. 在 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>
  1. 放入您将要使用库的 .ts 文件中声明 var Quiet: any;

就是这样,这样做你应该让库正常工作。


推荐阅读