Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RequireJS未捕获错误:不匹配的匿名定义()模块_Javascript_Backbone.js_Requirejs - Fatal编程技术网

Javascript RequireJS未捕获错误:不匹配的匿名定义()模块

Javascript RequireJS未捕获错误:不匹配的匿名定义()模块,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,在一个最小的应用程序中使用带主干的RequireJS,我总能得到 Uncaught Error: Mismatched anonymous define() module 即使应用程序继续工作。这是: 我在index.html中包括jQuery、下划线和主干,因为我想缩短每个视图/模型中的define()样板 包括 var l = console.log.bind(console) var app //l("AA") require.config({ paths: { //

在一个最小的应用程序中使用带主干的RequireJS,我总能得到

Uncaught Error: Mismatched anonymous define() module
即使应用程序继续工作。这是:

我在index.html中包括jQuery、下划线和主干,因为我想缩短每个视图/模型中的define()样板

包括

 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)
我无法从文档或回答的问题中找出问题:

多谢各位

我在index.html中包括jQuery、下划线和主干,因为我想缩短每个视图/模型中的define()样板

你不应该。如果你注意到,最上面的链接是到RequireJS的FAQ,解释了这一点

如果您在HTML中手动编写脚本标记,以加载带有匿名define()调用的脚本,则可能会发生此错误

--编辑

如果您使用的是grunt,那么当样板文件过载威胁到您的一天时,您可以使用grunt轻松地基于您自己的自定义模板创建模块:)


免责声明:我编写了Grunt插件。

找到了摆脱它的方法:直接使用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())

  })

您的代码有很多语法错误,尤其是缺少分号。我真的建议先把它们分类。也许可以取消对jQuery、下划线和主干的路径的注释,因为您的代码依赖于它们被包含,并将它们包含在
AppView
MyModel
define()
调用中。嗨,Simon,我希望避免在每个视图/模型/集合中定义jQuery、下划线和主干。我不确定您所指的语法错误是什么——添加分号不会消除这个错误。您不需要在每个视图、模型和集合中定义所有这些错误,但您肯定需要在所有这些错误中定义主干。如果您信任JavaScript固有的不可靠的自动分号插入功能,则可以省略分号。但我不知道你为什么要这么做。这是很难追踪的常见bug来源。谢谢Creynders,但我对此不满意。我想要的只是更少的代码,而不是(轻松地)为我生成代码的工具。@user3036808您是否尝试过通过
窗口
对象访问它们?即
窗口。$
。不过我不推荐。为什么那几行额外的代码会让你如此烦恼。我想要尽可能少的样板。2.该解决方案不适用于处理jQuery插件。请将以下内容与之进行比较:`define(['jQuery',下划线,'backline','models/MyModel','text!templates/mainTemplate.html',function($,33;,backbone,MyModel,mainTemplate){`define(['models/MyModel','text!templates/mainTemplate.html',function](MyModel,mainTemplate){“恐怕没有其他选项了。Argh…错误仍然出现在约30%的案例中,显然是随机出现的。找到了问题并将其永久修复:在require.js之前必须包含less.js。在require.js之前包含less.js不是“正确的解决方案”-即使用
requirejs.config()
处理less.js,必要时可能使用垫片。