SystemJS: почему я получаю ошибку jquery 1.по умолчанию функция при импорте в jQuery
Я установил foundation через jspm install foundation, а затем импортировал foundation и jquery.
проблема в том, что если я импортирую jquery через import $ as 'jquery'
Я получаю ошибку jquery_1.по умолчанию-это не функция. Если я импортирую jquery через import * as $ from jquery
он работает так, как ожидалось
Я призываю $(document).foundation();
для инициализации компонентов javascript основы. Ниже мой основной.ТС
import 'foundation'
import $ from 'jquery';
import {Aurelia} from 'aurelia-framework';
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(a => a.setRoot())
.then(a => {
// Initialize framework
$(document).foundation();
});
}
остальная часть кода-это просто навигация по умолчанию на простую страницу, которая содержит панель навигации foundation с выпадающим списком
Примечание: мне также пришлось явно установить jquery, хотя jquery указан как dep.
Я сделал оригинальное переопределение для foundation 6, явно сделал что-то не так, но, похоже, он работал в то время. Однако с тех пор я узнал, что при установке bootstrap он поместил jquery в GitHub:components, и это, казалось, сделало его таким, что jquery не нужно было явно устанавливать. Так в то время все казалось штраф.
для воспроизведения просто используйте скелет aurelia и добавьте страницу с элементом управления foundation, добавив $(document).фонд (), как указано выше
2 ответов
Если вы используете TypeScript set module=system в вашем tsconfig:
{
"compilerOptions": {
"module": "system",
"target": "es6",
"sourceMap": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"exclude": [
"node_modules",
"jspm_packages"
]
}
Я считаю, что это проблема с typescript. Из того, что я могу сказать, он не уважает инструкцию импорта стиля es6 для устаревшего кода, т. е. кода, который не имеет экспорта. Если вы используете старый стиль var $ = require ('jquery'), он работает.
исправление для этого-использовать флаг --allowSyntheticDefaultImports в true.
первая ссылка в нижней части проблемы typescript описывает это исправление
эти дискуссии для более деталь
SystemJS и default
импорт с export =
предложение
импорт значений по умолчанию с синтаксисом es6 не работает
не удается найти правильный синтаксис экспорта переменных по умолчанию