Ошибка поиска: Неверный анонимный метод define(): определение функции (имя, глобальное)

Я получил эту ошибку при загрузке файла 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 of soln). Однако я все еще вижу ошибку. Есть ли у кого-нибудь другие идеи?

Ответ 1

UPDATE

После проверки документов - это фактически первая ошибка, которую они обсуждают:

"Если вы вручную закодировали тег script в HTML для загрузки script с анонимным вызовом define(), эта ошибка может произойти."

Поэтому убедитесь, что в теге index.html указан только тег <script> (по крайней мере для любых скриптов, вызывающих define()).

END UPDATE

Вам нужно передать параметры function() следующим образом:

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

Недавно я написал супер-простую запись о настройке requirejs, если вы все еще застряли.

Ответ 2

В документах require.js может взорваться, если:

  • У вас есть анонимное определение ("модули, которые вызывают define() без string ID ") в своем собственном теге script (я предполагаю, что на самом деле они означают в любом месте в глобальном масштабе).
  • У вас есть модули с конфликтующими именами.
  • Вы используете плагины-загрузчики или анонимные модули, но не используете require.js оптимизатор для их объединения.

У меня была эта проблема, включая пучки, созданные с помощью браузера, рядом с модулями require.js. Решение было либо:

а. загрузите автономные пакеты non-require.js в тегах script до загрузки require.js или

В. загрузите их с помощью require.js (вместо тега script).