【问题标题】:Backbone Marionette dependencies not found with RequireJS使用 RequireJS 未找到 Backbone Marionette 依赖项
【发布时间】:2013-01-17 03:33:09
【问题描述】:

我正在使用 require.js 和 AMD 编写 Marionette 应用程序。 我将 Jsoverson 的 Addy Osmany 的 ToDoMVC 版本作为代码示例。我正在根据自己的需要调整它,即使关于此版本的文档不多。

每当我加载我的页面时,我都会在浏览器控制台中收到 404 错误:

GET http://127.0.0.1:8000/static/js/backbone.wreqr.js 404 (NOT FOUND) require.js:1836
Uncaught Error: Script error
http://requirejs.org/docs/errors.html#scripterror require.js:160
GET http://127.0.0.1:8000/static/js/backbone.eventbinder.js 404 (NOT FOUND) require.js:1836
GET http://127.0.0.1:8000/static/js/backbone.babysitter.js 404 (NOT FOUND) require.js:1836  
Uncaught Error: Script error
http://requirejs.org/docs/errors.html#scripterror 

现在,我看到了 backbone.wreqr 由 Marionette 的 author 编写的“是用于分离 Backbone 和 Backbone.Marionette 应用程序模块和组件的基础架构”。还有backbone.eventbinderbackbone.babysitter是作者写的项目。

1) 我不明白为什么我应该包含这些文件,因为我遵循的代码示例没有使用它们中的任何一个,而且它工作得很好。
2)无论如何,这些文件都需要在错误的路径中。我的应用程序是这样组织的:

Staticfiles/ 
|__js/
|    app.js
|    main.js
|    models/
|    ectr.
|__lib/
     backbone/
        Backbone.js
        Marionette.js (AMD version)
        Underscore.js
        ectr.

那么它为什么要在js/ 文件夹下寻找那些文件呢?
3)是Require.js问题还是我的js应用程序出错?

【问题讨论】:

    标签: javascript backbone.js requirejs marionette amd


    【解决方案1】:

    Marionette 需要这些文件才能正常工作,但作者将它们与 Marionette 分离,以便它们也可以用于其他项目。

    我建议你下载 Marionette 的捆绑版本,其中包含所有需要的依赖文件:

    http://marionettejs.com/#download

    【讨论】:

    • 我的错,我没有注意到有捆绑版本。我所关注的示例的作者很可能使用了该示例。谢谢!
    【解决方案2】:

    如果您想坚持使用 Marionette 的依赖版本(例如,您像我一样使用 JamJS),您可以将它们包含在您的 main.js 配置中。例如,这是我的:

    require.config({
        paths: {
                marionette: 'lib/Backbone.Marionette/lib/core/amd/backbone.marionette',
                'backbone.babysitter': 'lib/Backbone.BabySitter/lib/amd/backbone.babysitter',
                'backbone.wreqr': 'lib/Backbone.Wreqr/lib/amd/backbone.wreqr'
        }
    });
    

    这发生在您的应用的主要 require() 调用之前。

    【讨论】:

      【解决方案3】:

      RequireJS 假定您的所有脚本都位于与您的 main.js 文件相同的基目录中。

      如果要指定不同的基目录,请使用baseUrl 配置选项:

      <!-- In main.js -->
      require.config({
          baseUrl: "/another/path"
      });
      

      【讨论】:

      • 谢谢,现在更清楚为什么它在“错误的路径”中寻找。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      相关资源
      最近更新 更多