requirejs中奇怪的依赖项加载行为

requirejs中奇怪的依赖项加载行为,requirejs,Requirejs,我在requirejs中加载依赖项时遇到了问题,因此我尝试重新创建最简单的结构来显示我的问题。html文件包含一个引导typeahead框,我想在页面加载后用数据填充该框。如果我的main.js脚本是: requirejs.config({ paths: { jquery: 'libs/jquery/jquery-min', bootstrap: 'libs/bootstrap/bootstrap.min', underscore: 'libs/underscore/

我在requirejs中加载依赖项时遇到了问题,因此我尝试重新创建最简单的结构来显示我的问题。html文件包含一个引导typeahead框,我想在页面加载后用数据填充该框。如果我的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()
然后,如果页面从清理过的网络缓存加载,我会在控制台上看到以下错误:

类型错误:a不是函数

TypeError:$(“.typeahead”)。typeahead不是函数

错误:模块的加载超时:cs!路由器

如果我只是重新加载页面,所有错误都会消失,一切正常。如果有人能向我解释一下这里发生了什么,我将不胜感激。谢谢。

好的,用

<script data-main="js/main" src="js/libs/require/require-jquery.js"></script>

而不是

<script data-main="js/main" src="js/libs/require/require.js"></script>


在主html文件中。

我相信主脚本中的
定义应该是
require
。对不起,我的意思是require(['cs!app']);在配置文件之后,我的主应用程序脚本开始:define['jquery',…,'bootstrap']…我不知道它是否相关,但您不需要导出:'bootstrap'
。请看:没有影响主要问题。。。我正在重新编辑这篇文章,使我的结构更清晰。