У меня были те же проблемы, описанные выше.
import * as moment from 'moment';
- работал при разработке и загрузке через систему, но не во время свертывания.
import moment from 'moment';
- работал в сборе, но не во время разработки.
Чтобы избежать изменения кода в зависимости от типа сборки, я просто добавил момент как глобальный и создал вспомогательную функцию, которую я импортирую везде, где мне нужно использовать ее, а не импортировать момент.
Это означает, что один и тот же код работает для обоих типов сценариев. Это не особенно красиво, хотя, если есть лучший способ, позвольте мне/нам знать!
Вот вспомогательная функция, добавляется в его собственном файле momentLoader.ts
import { default as mom } from 'moment';
export default function moment(args?: any): mom.Moment {
let m = window["moment"];
if (!m) {
console.error("moment does not exist globally.");
return undefined;
}
return m(args);
}
Чтобы использовать момент в других классах я просто импортировать функцию и называть его, как если бы я импортировал момент непосредственно:
import moment from '../../momentLoader';
let d = moment().utc("1995-12-25");
let m = moment("1995-12-25");
Чтобы заставить systemjs загружать его как глобальное, я просто выполнил следующие шаги. http://momentjs.com/docs/#/use-it/system-js/
В моем случае момент конфигурации для systemjs выглядит следующим образом:
let meta = {
'lib:moment/moment.js': { format: 'global' }
};
System.config({
paths: paths,
map: map,
packages: packages,
meta: meta
});
System.import('lib:moment/moment.js');
Для накопительного пакета сборки, вы должны будете убедиться, что moment.js добавляется на страницу где-то с помощью тега сценария, к сожалению, он не будет включен в файл buildup build.
Вы могли понять это? – jjj
Не совсем ...:/ –
+1 Имея ту же проблему с 'import * как HighchartsMore от" highcharts/highcharts-more "; HighChartsMore (Highcharts) ' – Tair