在最小的应用程序中使用RequireJS和Backbone,我总是得到
Uncaught Error: Mismatched anonymous define() module
即使应用程序继续工作。这里是: https://assets.site44.com/admin/
我在index.html中包含jQuery,下划线,骨干,因为我想缩短每个视图/模型中的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
谢谢
答案 0 :(得分:4)
我在index.html中包含jQuery,下划线,骨干,因为我想缩短每个视图/模型中的define()样板。
你不应该。如果您google "Uncaught Error: Mismatched anonymous define() module",您会注意到最上面的链接是针对RequireJS的FAQ解释
如果您在HTML中手动编写脚本标记以使用匿名的define()调用加载脚本,则可能会发生此错误。
- 编辑
如果你正在使用grunt,你可以使用grunt-generate根据你自己的自定义模板轻松创建模块,当样板超载可能会毁了你的一天:)
免责声明:我写过Grunt插件。
答案 1 :(得分:0)
找到了如何摆脱它:直接使用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())
})