上記と同じ問題を抱えていました。
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);
}
他のクラスでモーメントを使用するには、関数をインポートして、モーメントを直接インポートしたかのように呼び出します。
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 がページのどこかに追加されていることを確認する必要があります。