2017-10-27 24 views
0

私はNG-ビルドで角度4アプリを構築し、私がアクセスしようとしたとき、私は次のエラーを取得するdevice.uuid:角度-CLIコルドバプラグインでエラー

/navigation.component.ts(14、 5):名前 'device'が見つかりません。

私がTSファイル内で参照するすべてのプラグインは、このエラーを引き起こします。 Angular-CLIでCordovaプラグインとCordovaプラグインを正しく使用する方法がわかりません。私はcordova.jsとプラグイン用のスクリプトファイルをangular-cli.jsonのスクリプト部分に成功せずに書いています。私はどこでもイオン性の例を見つけるだけです。

問題は、Cordovaのスクリプトとプラグインのスクリプトは、実際にはアプリケーションの実行時にのみ利用可能であり、コンパイル時には利用できないということです。だからこそ角張った人は実際にスクリプトを知らないのです。スクリプト部分でこれらのスクリプトを入力しても、device.uuidにはデバイスが見つかりません。 @types/.....を介してすべてのindex.d.tsファイルも含めました。Visual Studioコードが正しい宣言ファイルにジャンプします。

+1

デバイスプラグインを使用する '.ts'ファイルでインポートの下に' declare var device; 'を追加します。これにより、typescriptは 'device'変数が後で存在することを確信していることを知ることができます。 – David

+0

私は宣言ファイルを含んでいます。 varデバイスがあります。すでに定義されている。 Visual Studioは可変デバイスを認識しています。しかし、私がngビルドを呼び出すと、エラー – Roy

答えて

0

あなたのangle-cliにcordovaプラグインを含める必要はありません。

最初にindex.htmlにcordova.jsを呼び出していることを確認してください。 <script src="cordova.js"></script>。そのあなたはindex.htmlを<base href="file:///android_asset/www/" />

でも、基本パスを指定する必要がアンドロイドのためのビルドをしたい場合は、あなたのコルドバのアプリでコルドバのプラグインをインストールし、あなたの角度TSにそれを宣言した後

、例:declare var device:any;あなたがモバイルデバイス上のアプリを実行する場合

declare var device:any; 
export class ExampleClass { 
    constructor(){ 
     document.addEventListener("deviceready", this.onDeviceReady, false); 
    } 

    onDeviceReady() { 
     console.log(device.cordova); 
    } 
} 

この

にのみ使用することができます:あなたは、デバイスを呼び出したい場合、あなたはコルドバ devicereadyイベントリスナーを使用する必要があります。

+0

OKがありました。私は 'declare var device:any;'と書くと、クラスのトップになります。しかし、私は理由を理解していない。私は "@ types/cordova-plugin-device"をインストールしました。これはコードバデバイスプラグインの宣言ファイルです。この宣言ファイル(index.d.ts)にはすでにコードがあります 'declare var device:Device;' index.d.tsファイルは "node_modules \ @types \ cordova-plugin-device"フォルダにあります" ' "typeRoots":tsconfig.jsonファイルに次のエントリがありました[ "タイプ@ node_modules /" ]' は、しかし、角度CLIもrootTypesについて知っていますか? – Roy

+0

私はタイプイングを設定しようとしたことはありません。しかし、あなたの変数をtsファイルのインポートよりも下にこれらの方法で宣言すると、typescriptのために、デバイス変数が後で存在することを確信しています。 –

+0

うん。しかし、私はそのタイプを望んでいません。インターフェイスデバイスがあります。 'interfaceデバイス{ uuid:string; \t ...} ' 宣言VAR装置:デバイス;' [リンク](HTTPS://www.npmjs。com/package/@ types/cordova-plugin-device) - > [link](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/cordova-plugin-device) ここには次の宣言があります。可変デバイス。しかし、希望のインタフェースデバイスではなく、任意のデバイスで。 tsconfig.jsonファイルで、 '' typeRoots "を設定します。[ " node_modules/@ types " ] インデックスを使用するためにangular-cliにどこで通知できますか? d。フォルダ内のファイルは何ですか? – Roy