次の「メイン」モジュールを実行すると、「TypeError:OrdersPageはコンストラクターではありません」というメッセージが表示されます。
require(
[
'app/pages/orders/OrdersPage'
],
function(OrdersPage) {
'use strict';
new OrdersPage();
}
);
function(OrdersPage)内にいるとき、「OrdersPage」は未定義であることがわかりました。したがって、問題は、OrdersPageを依存関係として定義しているにもかかわらず、なぜそれが未定義なのかということです。
これが実際にヒットしているOrdersPageのコードですが、上記のエラーが出力された後は次のようになります。
require(
[
'backbone'
],
function() {
'use strict';
console.log('In OrdersPage');
return Backbone.View.extend({
});
}
);
要約すると、コンソール出力は次のとおりです。
TypeError: OrdersPage is not a constructor
In OrdersPage
これは、「メイン」モジュールがロードされて実行された後にOrdersPageモジュールがロードされていることを示していますが、これは遅すぎます。
編集1 この問題を示す非常に単純なプロジェクトがここにあります。
編集 2RequireJS構成でバックボーンをすでに宣言しています。
require.config({
// Initialize the application with the main application file
deps: ['main'],
paths: {
// jQuery
jquery: 'vendor/jquery-1.8.3',
// Underscore
underscore: 'vendor/underscore-1.4.3',
// Backbone
backbone: 'vendor/backbone-0.9.9',
// Templating
handlebars: 'vendor/handlebars-1.0.rc.1'
},
shim: {
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
handlebars: {
exports: 'Handlebars'
},
underscore: {
exports: '_'
}
}
});
require(
[
'app/pages/orders/main'
],
function() {
'use strict';
}
);