Uncaught Error: Несоответствующий анонимный модуль 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 из Sol'n). Однако я все еще вижу ошибку. У кого-нибудь есть другие идеи???

2 ответа

Решение

ОБНОВИТЬ

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

"Если вы вручную закодируете тег сценария в 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, если вы все еще застряли.

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

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

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

А. загрузить non-require.js автономные пакеты в тегах скрипта перед require.js загружен, или

Б. загрузить их, используя require.js (вместо тега скрипта).

Другие вопросы по тегам