web-dev-qa-db-fra.com

Erreur non interceptée: module define () anonyme non concordant: définition de fonction (nom, global)

J'ai eu cette erreur lors du chargement du fichier requirejs pour la dorsale. J'ai essayé de charger le r.js, l'optimiseur requirejs, mais je suis toujours coincé avec.

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

"use strict";

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

Voici mon js:

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

Il semble que des modifications aient été apportées à la fonction d'appel requirejs define (), mais je ne peux pas le comprendre. Quelqu'un at-il des idées?

ÉDITER:::

Vous trouverez ci-dessous le fichier 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

Qu'est-ce que je fais de mal ici ?? Je vérifie tous mes chemins et ils semblent être corrects, je ne comprends toujours pas pourquoi ce problème me dérange toujours .. :( J'ai essayé de changer les chemins pour les routes, et aussi de passer des arguments à la function($, _, Backbone) (comme indiqué ci-dessous dans 1 du sol'n). Cependant, je semble toujours voir l'erreur. Est-ce que quelqu'un a d'autres idées ???

12
user2942566

[~ # ~] mise à jour [~ # ~]

Après avoir vérifié les documents - c'est en fait la première erreur dont ils discutent :

"Si vous codez manuellement une balise de script en HTML pour charger un script avec un appel define () anonyme, cette erreur peut se produire."

Assurez-vous donc que la seule balise <script> (Au moins pour tous les scripts qui appellent define()) dans votre index.html est celle à requirejs.

FIN DE LA MISE À JOUR

Vous devez passer des paramètres à votre function() comme ceci:

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

J'ai écrit un post super simple sur la configuration de requirejs récemment, si vous êtes toujours bloqué.

16
cs_stackX

Selon la documentation, require.js Peut exploser si:

  • Vous avez une définition anonyme ("modules qui appellent define() sans ID de chaîne") dans sa propre balise de script (je suppose en fait qu'ils signifient n'importe où dans la portée globale).
  • Vous avez des modules qui ont des noms contradictoires.
  • Vous utilisez des plugins de chargement ou des modules anonymes mais n'utilisez pas l'optimiseur de require.js Pour les regrouper.

J'ai eu ce problème lors de l'inclusion de bundles construits avec browserify aux côtés des modules require.js. La solution consistait à:

A. chargez les ensembles autonomes non-require.js Dans des balises de script avant le chargement de require.js, Ou

B. chargez-les en utilisant require.js (Au lieu d'une balise de script).

3
user2520306