2

他のメンバーが私と同じエラー メッセージを表示した過去のスレッドを読みましたが、彼らが受け入れた解決策は役に立たないようです。

基本的に、index.html をロードしようとすると、Chrome コンソールで次のようになります。

Uncaught Error: Module name "underscore" has not been loaded yet for context: _. Use require([])

数秒後、これが表示されます:

Uncaught Error: Load timeout for modules: underscore,backbone

day_view.js が正常に読み込まれるまで (200 OK)、Chrome ネットワーク ツールに異常は表示されません。

ファイル構造

ここに画像の説明を入力

index.html

...
<script>
        var require = {
            deps: ["jquery/jquery-min", "underscore/underscore-min", "backbone/backbone-min"]
        };
</script>
<script data-main="scripts/main" src="scripts/require.js"></script>
...

main.js

require.config({
    baseUrl: 'scripts',

    paths:{
        jquery:'jquery/jquery-min',
        underscore:'underscore/underscore-min',
        backbone:'backbone/backbone-min'
    },

    shim: {
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ["underscore/underscore-min", "jquery/jquery-min"],
            exports: "Backbone"
        }
    },

    waitSeconds: 200
});

require(['day_view'], function (day_view) {
    function start() {
        day_view.render();
    }

    return {
        start:start
    };
});

day_view.js

define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
    function render() {
        ...
    }
...
4

3 に答える 3

8

これは最終的に機能しました。

require.config({
    paths:{
        jquery:'jquery/jquery-min',
        underscore:'underscore/underscore-min',
        backbone:'backbone/backbone-min'
    },
    shim: {
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ["underscore", "jquery"],
            exports: "Backbone"
        },
        waitSeconds: 15
    }
});

require(['day_view'], function (day_view) {
    function start() {
        day_view.show();
    }
    console.log(day_view); // Empty object here?
    return {
        start:start
    };
});

define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) { ...
于 2013-05-28T07:17:06.063 に答える
3

上記のシムを使用するか、jrburke の ** AMD 互換のバックボーン/アンダースコアのフォークを使用することもできます。

https://github.com/amdjs/backbone

https://github.com/amdjs/underscore

これにより、次のことが簡単にできます。

require.config({
    paths:{
        jquery:'jquery/jquery-min',
        underscore:'underscore/underscore-min',
        backbone:'backbone/backbone-min'
    }
});

define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) { ...

率直に言って、フォークはシムを使用するよりも簡単/クリーン/堅牢であることがわかりました.

**参考までに、 jrburkeは requirejs の作成者です。

于 2013-05-29T14:06:31.300 に答える