nativescript-community / texttospeech

Text to Speech NativeScript plugin for Android & iOS :loudspeaker:

Home Page:http://nativescript-community.github.io/texttospeech/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"TypeError: Right-hand side of 'instanceof' is not an object" when I tried to add the service for TNSTextToSpeech.

hims1911 opened this issue · comments

I've created a service file for TNSTextToSpeech as speak.service.ts :

import { Injectable }             from '@angular/core';
import { TNSTextToSpeech, SpeakOptions } from '@nativescript-community/texttospeech';

@Injectable({
  providedIn: 'root'
})
export class SpeakerService {


  TTS : TNSTextToSpeech;
  constructor() {
      this.TTS = new TNSTextToSpeech();
  }

  play(text : string) {
    let speakOptions: SpeakOptions = {
        text: text, /// *** required ***
        speakRate: 1.0, // optional - default is 1.0
        pitch: 1.0, // optional - default is 1.0
        volume: 1.0, // optional - default is 1.0
        language: 'en',  // optional - default is system language,
        finishedCallback: () => {
          console.log("We have finish to read text");
        } // optional
    }
    this.TTS.speak(speakOptions);
  }

  destroy(){
      this.TTS.destroy();
  }
}

Then I've injected this service into the home component constructor and it giving us the error :

System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onCreateView failed
System.err: TypeError: Right-hand side of 'instanceof' is not an object
System.err:
System.err: StackTrace:
System.err: (file: node_modules\@nativescript\core\ui\layouts\flexbox-layout\flexbox-layout.android.js:14:0)
System.err:     at applyAllNativeSetters(file: node_modules\@nativescript\core\ui\core\properties\properties.js:1065:0)
System.err:     at initNativeView(file: node_modules\@nativescript\core\ui\core\properties\properties.js:992:0)
System.err:     at push.../node_modules/@nativescript/core/ui/core/view-base/view-base.js.ViewBase.onResumeNativeUpdates(file: node_modules\@nativescript\core\ui\core\view-base\view-base.js:647:0)```

It doesn't seem to be working when I tried to inject in the constructor. 

Follow below steps, it should work.

Reference: NativeScript/NativeScript#8739, Look at SachindeepRedsky comment

Go to @nativescript/core/ui/layouts/flexbox-layout/flexbox-layout.android.js

Replace:

var widgetFlexboxLayout;
var widgetLayoutParams;

with

let widgetFlexboxLayout= org.nativescript.widgets.FlexboxLayout;
let widgetLayoutParams= org.nativescript.widgets.FlexboxLayout.LayoutParams;