未捕获的错误:匿名定义模块不匹配:函数定义(名称,全局)

12

当加载backbone的requirejs文件时,我遇到了这个错误。我尝试加载r.js(即requirejs优化器),但仍然无法解决问题。

Uncaught Error: Mismatched anonymous define() module: function definition(name, global){

"use strict";

var PubSub = {
        name: 'PubSubJS',
        version: '1.3.1-dev'

以下是我的js代码:

define([
'jquery',
'underscore',
'backbone'
],function(){
subAccountRouter = Backbone.Router.extend({
  routes: {
  // Defining the routes
    'sub-accounts': 'subAccountList',
    '*actions': 'defaultAction'
  },
});

看起来requirejs define()调用函数做了一些更改,但我不知道如何解决。有人有什么想法吗?

编辑:::

以下是router.js文件。

    define([
       'jquery',
       'underscore',
       'backbone'
      ],function($, _, Backbone){
          SubAccountRouter = Backbone.Router.extend({
              routes: {
               'sub-accounts': 'subAccountList',
               '*actions': 'defaultAction'
              },


           initialize: function () {
              this.appContainer = $("#subaccount");
    //collections and models
              this.subAccountCollection = null;
            this.subAccountModel = null;
          },

      subAccountList: function(){
        var self = this;
        },
     defaultAction: function(){
        this.subAccountList();
      },
      });

    return {
       initialize: function() {
           Backbone.history.start();

          }
        };
     }); //main func

我在这里做错了什么??我检查了所有路径,它们似乎都是正确的,但我仍然不明白为什么这个问题仍然困扰着我... :( 我尝试更改路由的路径,并且也传递参数给function($, _, Backbone)(如下面1个解决方案所示)。 但是我似乎仍然看到错误。有人有其他想法吗???

1个回答

18

更新

在检查文档后,这实际上是他们讨论的第一个错误

"如果你在HTML中手动编写脚本标签来加载一个使用匿名define()调用的脚本,那么就会出现这个错误。"

因此,请确保只有一个 <script> 标签(至少对于任何调用 define() 的脚本)在您的index.html中引用 requirejs。

更新结束

您需要像这样向您的function()传递参数:

define([
'jquery',
'underscore',
'backbone'
],function(jquery, underscore, backbone){
subAccountRouter = Backbone.Router.extend({
  routes: {
  // Defining the routes
    'sub-accounts': 'subAccountList',
    '*actions': 'defaultAction'
  },
});

最近我写了一篇非常简单的文章介绍如何设置 requirejs,如果你仍然困惑的话。


谢谢,这应该理想地运行,但是对我来说仍然无法工作..:( - user2942566
1
有没有什么办法可以避免这个问题?我的意思是我还能加载我的 HTML 页面和其他东西吗? - user2942566
这篇文章可能会有所帮助:http://backbonetutorials.com/organizing-backbone-using-modules/。 - cs_stackX
请问您能详细说明一下吗?我不太理解。比如说:"使用匿名定义加载脚本"是什么意思?您能给个例子吗? - Prisoner ZERO
匿名定义调用define()而没有字符串ID - 更多信息请参见:https://dev59.com/IGUp5IYBdhLWcg3wS2PP - cs_stackX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接