1

そのため、RequireJS の r.js を使用して、すべての JavaScript モジュールを 1 つのファイルにコンパイルしようとしています。コードは別々のファイルに残りますが、スクリプトは問題なく実行されます。しかし、r.js がそれらをすべて同じファイルに配置した後、momentTimezones がロードされないようです。モジュール angularMoment はそれらの両方を使用し、モーメントのみがロードされます。

main.js で使用している shim は次のとおりです。

shim: {
    angular: {
        exports: 'angular' 
    },
    uiRouter: ['angular'],
    ngResource: ['angular'],
    ngAnimate: ['angular'],
    angularLocaleSweden: ['angular'],
    angularMoment:{
        deps: ['angular', 'momentTimezones', 'moment'],
        exports: 'angularMoment'
    },
    uiModal: ['angular'],
    angularConfirm: ['uiModal'],
    lodash: {
        exports: '_'
    },
    jquery: {
        exports: '$'
    },
    angularToastr: ['jquery', 'angular'],
    'jquery.signalr': ['jquery'],
    'signalr.hubs': ['jquery.signalr'],
    'ng-file-upload': ['angular'],
    'ng-file-upload-shim': ['angular'],
    'ng-img-crop': ['angular']
}

これは私のr.jsビルド構成です:

({
    baseUrl: './Client',
    mainConfigFile: './Client/main.js',
    name: 'main',
    out: './Client/main.min.js',
    //wrapShim: true,
    optimize: 'none',
    //findNestedDepencies: true
})

コンパイルした main.js を実行しようとすると、次のようになります。

TypeError: moment.utc(...).tz is not a function

angular-moment: named timezone specified but moment.tz() is undefined. Did you forget to include moment-timezone.js?

他のすべてが機能します。コンパイルされた main.js を調べたところ、moment.js のコンテンツの後、angularMoment.js のコンテンツの前に、moment-timezones のコンテンツがそこにあります。

4

0 に答える 0