1. ホーム
  2. angular

[解決済み] Uncaught (in promise): Ionic 2でcordova_not_available。

2022-02-09 04:20:23

質問

Ionicアプリに ionic serve -l コマンドを実行すると、次のようなエラーメッセージが表示されます。

ランタイムエラー

Uncaught (in promise): cordova_not_available

スタック

Error: Uncaught (in promise): cordova_not_available
at v (http://localhost:8100/build/polyfills.js:3:4864)
at s (http://localhost:8100/build/polyfills.js:3:4289)
at s (http://localhost:8100/build/polyfills.js:3:4112)
at http://localhost:8100/build/polyfills.js:3:4652
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:10284)
at Object.onInvokeTask (http://localhost:8100/build/main.js:38692:37)
at t.invokeTask (http://localhost:8100/build/polyfills.js:3:10220)
at e.runTask (http://localhost:8100/build/polyfills.js:3:7637)
at i (http://localhost:8100/build/polyfills.js:3:3707)
at HTMLDocument.invoke (http://localhost:8100/build/polyfills.js:3:11437)

その他詳細

Ionic Framework: 2.2.0
Ionic Native: 2.8.1
Ionic App Scripts: 1.1.4
Angular Core: 2.4.8
Angular Compiler CLI: 2.4.8
Node: 6.9.2
OS Platform: Windows 10
Navigator Platform: Win32
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

インストール ホットスポット プラグインを使用する場合は、以下のコマンドを実行してください。

ionic plugin add cordova-plugin-hotspot --save

cordova plugin add cordova-plugin-hotspot --save

使用方法 app.component.ts

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar, Splashscreen,Hotspot,Network } from 'ionic-native';
import { TabsPage } from '../pages/tabs/tabs';


@Component({
 templateUrl: 'app.html'
})

export class MyApp {
rootPage = TabsPage;

 constructor(platform: Platform) {

  platform.ready().then(() => {
     StatusBar.styleDefault();
     Splashscreen.hide();
     Hotspot.scanWifi().then((networks: Array<Network>) => {
     console.log(networks);

 });
})
   }
  }

また、似たような 質問 が、問題解決には至らなかった。

どのように解決するのですか?

ブラウザでテストしているときに、ネイティブプラグインにアクセスしている。プラグインを動作させるためには、実機でテストする必要があります。

ブラウザでテスト可能なコードにするために(あるいはブラウザでテストしても実際に壊れないように)、Cordovaが利用可能かどうかをチェックするif文を用意する必要があります。

  if (this.platform.is('cordova')) {
    // You're on a device, call the native plugins. Example: 
    //
    // var url: string = '';
    // 
    // Camera.getPicture().then((fileUri) => url = fileUri);
  } else {
    // You're testing in browser, do nothing or mock the plugins' behaviour.
    //
    // var url: string = 'assets/mock-images/image.jpg';
  }

EDIT

Ricky Levi がここで正しく言及しているように、Ionic は browser というプラットフォームがあります。このプラットフォームを使って、ほとんどの一般的なプラグインを動作させることができます。ただし、Barcode-scannerプラグインなど、動作しないプラグインもある。このプラグインは警告を発し、次のような値を要求します。 scanned . これでは、バーコード・スキャナーの使い道がなくなってしまいます。