Я пытаюсь использовать library.js-библиотеку внутри приложения Angular 2 Typescript. Даже после прочтения ответа на этот вопрос я не могу заставить его работать.
Это то, что я сделал до сих пор:
- Я установил moment.js с помощью npm, поэтому я могу найти библиотеку под node_modules/moment/moment.js
-
Я сконфигурировал System.js для извлечения библиотеки минут:
System.config({ packages: { app: { format: 'register', defaultExtension: 'js' }, moment: { main: 'moment.js', type: 'cjs', defaultExtension: 'js' } }, map: { moment: 'node_modules/moment' } });
- Я установил тики Typescript с
typings install moment-node --ambient --save
иtypings install moment --ambient --save
, поэтому я вижу правильные пишущие черты внутри typings/main/ambient/moment- node и typings/main/ambient/moment
Теперь, если в моем коде я использую import * as moment from 'moment';
Typescript, компиляция выполняется гладко, и я вижу правильное предложение внутри редактора Atom (если я начинаю с moment().
, я могу видеть year(), month() и т.д..). Однако, если я запустил свой код внутри браузера, он дает ошибку, говоря, что "момент не является функцией" (отладка я вижу, что момент - это объект с большим количеством методов).
Если я пишу import moment from 'moment';
, код в браузере отлично работает, однако компиляция Typescript не выполняется, поскольку "момент модуля не имеет экспорта по умолчанию", и я не могу получить никаких предложений от Atom при написании кода.
Что я делаю неправильно? Какой правильный способ импортировать файл moment.js(и любую библиотеку без Typescript) внутри приложения Angular 2 Typescript?