backbone.js RequireJS未捕获错误:不匹配的匿名define()模块

u0njafvf  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(228)

在一个最小的应用程序中使用带有Backbone的RequireJS,我总是会得到

Uncaught Error: Mismatched anonymous define() module

即使应用程序继续工作。下面是:https://assets.site44.com/admin/
我在index.html中包含了jQuery、下划线和 Backbone.js ,因为我想缩短每个视图/模型中的define()样板。
https://assets.site44.com/admin/js/main.js包含

var l = console.log.bind(console)

var app
//l("AA")

require.config({
  paths: {
    // Major libraries
    /*jquery: 'libs/jquery/jquery-min',
    underscore: 'libs/underscore/underscore-min', // https://github.com/amdjs
    backbone: 'libs/backbone/backbone-min', // https://github.com/amdjs

* /

    // Require.js plugins
    text: 'text'

  }

})

function initApp() {
  console.log("BB")

  require([
    'views/AppView'
  ], function(AppView){
    l("CC")

    app = new AppView()
    $("#app").html(app.render())

  })
}

$(document).ready(initApp)

我无法从文档或已回答的问题中找出问题:Mismatched anonymous define() module
谢谢你

qfe3c7zg

qfe3c7zg1#

我在index.html中包含了jQuery、下划线和 Backbone.js ,因为我想缩短每个视图/模型中的define()样板。
如果你有兴趣的话,你会注意到最上面的链接是RequireJS的FAQ,解释了这一点
如果您在HTML中手动编写script标记的代码,以使用匿名define()调用加载脚本,则可能会发生此错误。
--编辑
如果你使用grunt,你可以使用grunt-generate来根据你自己的自定义模板轻松地创建模块,当样板文件过载威胁要毁了你的一天时:)
免责声明:我写的Grunt插件。

vxf3dgd4

vxf3dgd42#

如果您在HTML中手动编写script标记的代码,以使用匿名define()调用加载脚本,则可能会发生此错误。
如果您在HTML中手动编写script标记以加载具有几个命名模块的脚本,但随后尝试加载的匿名模块最终与手动编写的script标记所加载的脚本中的某个命名模块同名。

ia2d9nvy

ia2d9nvy3#

找到了如何摆脱它:直接使用require(),而不是在ready处理程序中使用

var l = console.log.bind(console)

var app
//l("AA")

require.config({
  paths: {
    // Major libraries
    /*jquery: 'libs/jquery/jquery-min',
    underscore: 'libs/underscore/underscore-min', // https://github.com/amdjs
    backbone: 'libs/backbone/backbone-min', // https://github.com/amdjs

* /

    // Require.js plugins
    text: 'text'

  }

})

  require([
    'views/AppView'
  ], function(AppView){
    l("CC")

    app = new AppView()
    $("#app").html(app.render())

  })

相关问题