私はrequirejsで依存関係をロードするのに問題があったので、私の問題を示す最も単純な構造を再作成しようとしました. html ファイルには、ページの読み込み後にデータを入力したいブートストラップの先行入力ボックスが含まれています。私の main.js スクリプトが次の場合:
requirejs.config({
paths: {
jquery: 'libs/jquery/jquery-min',
bootstrap: 'libs/bootstrap/bootstrap.min',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-optamd3-min',
cs: 'libs/require/cs',
'coffee-script': 'libs/coffeescript/coffee-script'
},
shim: {
bootstrap: {
deps: ['jquery']
}
});
require(['cs!router']);
私のバックボーン エントリ ポイントは非常に単純なルーターです。
define ['jquery','underscore','backbone','bootstrap'], ($, _, Backbone) ->
AppRouter = Backbone.Router.extend
initialize: () ->
@data = ['one','two','three']
routes: '': 'index'
index: () ->
$('.typeahead').typeahead({source:@data})
app_router = new AppRouter
Backbone.history.start()
その後、クリーニングされた Web キャッシュからページが読み込まれると、コンソールに次のエラーが表示されます。
TypeError: a は関数ではありません
TypeError: $(".typeahead").typeahead は関数ではありません
エラー: モジュールの読み込みタイムアウト: cs!router http://requirejs.org/docs/errors.html#timeout
ページをリロードするだけで、すべてのエラーが消え、すべて正常に動作します。誰かがここで何が起こっているのか説明してくれたら本当にありがたいです、ありがとう。