2016-08-30 8 views
1

Я использую Aurelia с машинописным текстом, используя aurelia-cli и npm as build system и менеджер пакетов на стороне клиента. Моя цель состоит в том, чтобы использовать JQuery в одном из моих .ts файлов, так что я добавил JQuery черезИспользование JQuery в Aurelia с машинописным текстом

npm install [email protected] --save 

и после него для типизации, которые я использовал:

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.

Существует несколько способов обхода - первые два должны переименовать объявления для Protractor или jQuery (вот почему первые два ответа здесь для jQuery). Если вы предпочтете оставить jQuery с '$', переименуйте Global Protractor. Вы найдете объявление в your-project-directory\typings\globals\angular-protractor\index.d.ts (ну, это место в моем проекте Aurelia + gulp/jspm). Ищите линию declare var $: cssSelectorHelper; и полностью отредактируйте или прокомментируйте это.

В качестве альтернативы, если вы не собираетесь использовать Protractor, то полностью удалите его из своего проекта.

Если вам нужен Транспортир и jQuery, попробуйте удалить символы протравника (таким образом удалив глобальную декларацию Protractor) - 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 то сейчас это выглядит как лучшее решение, мы надеемся, это будет разрешится, или если кто-то есть лучшее решение, пожалуйста, разделите ...