我遇到了上述相同的问题。
import * as moment from 'moment';
- 在通过 systemjs 开发和加载时工作,但不是在汇总期间工作。
import moment from 'moment';
- 在汇总构建中工作,但不是在开发期间。
为了避免必须根据构建类型更改代码,我只是将 moment 作为全局添加并创建了一个辅助函数,我在需要使用它的任何地方导入它而不是导入 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);
}
要在其他类中使用 moment,我只需导入函数并调用它,就好像我直接导入了 moment:
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 添加到页面的某个位置,因为不幸的是它不会包含在汇总构建文件中。