2

r.jsビルド(アーモンドを使用)でmoment.jsを正常にロードした人はいますか?

私は backgrid と backgridMomentCell を使用しています: main.min.js ファイルをビルドする前に、すべてが完全に機能します。ビルド後の瞬間は定義されていないため、backgridMomentCell 拡張機能で見つけることができません。

成功せずにいくつかのオプション(シムも)を試しました。

誰かがrequire.configを持っている場合、彼/彼女はそれを共有できますか?

編集(すぐに答えられなくて申し訳ありません、起動時間は私をSOから遠ざけました):

ビルド ファイル BackGridMomentCell で、「モーメントが定義されていません」というエラーがスローされ続けます。

コメントで要求された私のコード


requirejs.config({
    paths: {
        backbone: 'vendor/backbone-1.1.0',
        backbonePageable: 'vendor/backbone-pageable-1.4.1',
        backgrid: 'vendor/backgrid/js/backgrid-0.2.6',
        backgridPaginator: 'vendor/backgrid/js/extensions/paginator/backgrid-paginator',
        backgridMomentCell: 'vendor/backgrid/js/extensions/moment-cell/backgrid-moment-cell',
        bootstrap: 'vendor/bootstrap/js/bootstrap-3.0.1',
        bootstrapDatepicker: 'vendor/bootstrap-datepicker/bootstrap-datepicker-fda46bb',
        codemirror: 'vendor/codemirror/js/codemirror-3.20',
        codemirrorMarkdown: 'vendor/codemirror/mode/markdown/markdown',
        jsDiff: 'vendor/diff-1.0.7',
        fullCalendar: 'vendor/fullcalendar/fullcalendar-1.6.4',
        fullCalendarJqueryUiCustom: 'vendor/fullcalendar/jquery-ui-1.10.3.custom.min',
        jquery: 'vendor/jquery-1.10.2',
        marked: 'vendor/marked-0.2.10',
        select2: 'vendor/select2/select2-3.4.5',
        speakingurl: 'vendor/speakingurl-0.4.0',
        underscore: 'vendor/underscore-1.5.2',
        moment: 'vendor/moment.with.langs'

    },
    shim: {
        backbone: {
            deps: ['jquery', 'underscore'],
            exports: 'Backbone'
        },
        backgrid: {
            deps: ['jquery', 'backbone', 'underscore'],
            exports: 'Backgrid'
        },
        backgridPaginator: {
            deps: ['backgrid']
        },
        backgridMomentCell: {
            deps: ['backgrid','moment']
        },
        bootstrap: {
            deps: ['jquery']
        },
        bootstrapDatepicker: {
            deps: ['jquery']
        },
        codemirror: {
            exports: 'CodeMirror'
        },
        codemirrorMarkdown: {
            deps: ['codemirror'],
            exports: 'codemirrorMarkdown'
        },
        fullCalendar: {
            deps: ['jquery', 'fullCalendarJqueryUiCustom']
        },
        fullCalendarJqueryUiCustom: {
            deps: ['jquery']
        },
        select2: {
            deps: ['jquery']
        },
        underscore: {
            exports: '_'
        }
    }
});

私のモジュールの頭


define([
    'jquery',
    'fullCalendar',
    'underscore',
    'backgrid',
    'backgridPaginator',
    'moment',
    'backgridMomentCell',
    'backbone',
    'collections/ItemPaginatedCollection',
    'utils/BackgridCustomUriCell'
], function ($, _fullCalendar, _, Backgrid, _backgridPaginator, moment, MomentCell,Backbone, ItemPaginatedCollection, BackgridCustomUriCell) {

"use strict";

....

編集3:

コンパイルされた main.js が機能する前に moment.js をロードしますが、最適な IMHO ではありません。

4

3 に答える 3

1

私が見つけた最も簡単な2つの方法:

1) RequireJS API で指定されたCommonJS ラッパー コードで backgrid-moment-cell.js をラップします。これは、API に記載されている変換ツールを使用して、ビルド プロセス中に動的に行うことができます。

2) モーメント セル インラインを要求し、build.js で findNestedDependencies を false に設定します。

問題は、モーメント セル コードがthis初期化時にそれ自体に渡され、「exports.moment」または「this.moment」のいずれかを検索することです。

関連する注意事項として、モーメントセルのシムにモーメントを含めることは不要であり、技術的にはアンダースコアを含める必要があります。 API から:

他の「shim」モジュールのみを、shim されたスクリプトの依存関係として使用するか、依存関係がなく、グローバル (jQuery や lodash など) を作成した後に define() を呼び出す AMD ライブラリを使用します。それ以外の場合、AMD モジュールを shim 構成モジュールの依存関係として使用すると、ビルド後、その AMD モジュールは、ビルドで shim されたコードが実行されるまで評価されず、エラーが発生します。最終的な修正は、すべての shimmed コードをアップグレードして、オプションの AMD define() 呼び出しを行うことです。

Moment は実際には AMD モジュールです。

于 2014-03-20T16:11:02.953 に答える
0

私はそれが廃止された瞬間のグローバルオブジェクトに関係していると思います。

2.4.0 - Deprecate globally exported moment, will be removed in next major

https://github.com/moment/moment

特定のモジュールでモーメントを定義する必要があります。

于 2014-01-15T21:08:58.767 に答える
0

findNestedDependencies最も可能性の高い問題は、ビルド ファイルで true を指定しなかったことです。

このコミットを見てください (RquireJS と Backbone.Marionette に関する私のから):

于 2014-01-13T08:44:42.727 に答える