2016-08-30 8 views
1

ビルドシステムとクライアントサイドのパッケージマネージャとしてaurelia-cliとnpmを使用して、Aureliaにtypescriptを使用しています。私の目標は、私の.TSファイルの1つにjqueryのを使用することですので、私は私が使用タイピングのためAureliaのTypescriptでJqueryを使用する

npm install [email protected] --save 

を通って、それの後にjqueryのを追加しました:

typings install dt~jquery --global --save 

私もaurelia.jsonファイルで構成されましたベンダーバンドル依存としての "jquery"

import * as jq from 'jquery'; 

をが、プロジェクトには、次のエラーでビルドに失敗しました:

使用

Starting 'readProjectConfiguration'... Finished 'readProjectConfiguration' Starting 'processMarkup'... Starting 'processCSS'... Starting 'configureEnvironment'... Finished 'processCSS' Finished 'processMarkup' Finished 'configureEnvironment' Starting 'buildTypeScript'... typings/globals/jquery/index.d.ts(3218,13): error TS2403: Subsequent variable declarations must have the same type. Variable '$' must be of type 'cssSelectorHelper', but here has type 'JQueryStatic'. [17:45:00] gulp-notify: [Error running Gulp] Error: typings/globals/jquery/index.d.ts(3218,13): error TS2403: Subsequent variable declarations must have the same type. Variable '$' must be of type 'cssSelectorHelper', but here has type 'JQueryStatic'.

ので、自分のコードが間違って何ですか?

答えて

0

ちょうどにjqueryのd.tsモジュールの宣言を変更する必要があります。

declare module "jquery" { 
    export var $:JQueryStatic; 
    export var jquery:JQueryStatic 
} 
2

この既知の問題であり、jQueryと分度器型定義間の衝突によって引き起こされます。

hereおよびhereを参照してください。

両方ともグローバルとして '$'を宣言します。分度器は$( 'css')をjQueryとの衝突を引き起こすショートカットセレクタとして使用します。

いくつかの回避策があります。最初の2つは、分度器またはjQueryの宣言の名前を変更することです(これはjQueryの最初の2つの答えです)。 jQueryを '$'のままにしておきたい場合は、分度器の名前をグローバルに変更してください。宣言はyour-project-directory\typings\globals\angular-protractor\index.d.tsにあります(これは私のAurelia + gulp/jspmプロジェクトの場所です)。行declare var $: cssSelectorHelper;を探し、それを完全に編集またはコメントアウトします。

また、プロトラクターを使用しない場合は、プロジェクターをプロジェクトから完全に削除してください。

分度器とjQueryが必要な場合は、分度器の入力をアンインストールしてください(したがって、分度器のグローバル宣言は削除されます)。see this article at aureliajsrocks.com。この資料では、これは単なるtranspilerエラーであることを指摘:

Although Protractor declares a $ variable that conflicts with jQuery, you don’t actually load Protractor into memory when running your app. So there is no conflict with jQuery during runtime.

The problem occurs because the Protractor TypeScript definition file is global and is loaded by the transpiler even if the actual .js library itself isn’t being loaded....

あなたはjQueryのを持っているし、その後、今、これは誰もが持っている場合は、うまくいけば、これは解決またはしまいます最善の解決策のように見えるProtactorテストを実行する必要がある場合より良い解決策は、共有してください...

関連する問題