Question

J'ai du mal à comprendre pourquoi un module chargé avec RequireJS n'ont pas accès à l' define fonction.

Dans mon code HTML:

<script data-main="/assets/js/app/main.js" src="/assets/libs/require.js/2.1.9/require.js" type="text/javascript"></script>

Dans main.js:

// Initialize Require.js
require.config({
   baseUrl: 'http://test.dev/cart/assets',
   paths: {
      jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
   }
});

// Main app logic
require( ['jquery', 
          'js/app/cart', 
          'js/app/wizard',
          'js/lib/colorbox', 
          'js/lib/jvfloat'], function ($, Cart, Wizard, ColorBox, jvfloat) {

    // Initialize Cart
    Cart.init();

    // Initialize Wizard
    Wizard.init();
}

);

En ce que, colorbox.js charge très bien et est enveloppé comme:

define(['jquery'], function ( jQuery ) {
     // ...Colorbox code here
});

Lorsqu'il essaie de charger jvfloat.js il lance:

Uncaught ReferenceError:définir n'est pas défini

Même s'il est emballé avec le exact même enveloppe colorbox.

J'ai même essayé l'ajout d'une cale d'épaisseur (non pas qu'il fait sens) pour voir si je peux forcer la charge...mais qui ne fonctionne pas non plus:

shim: {
   'jvfloat': {
      deps: ['require','jquery'],
      exports: 'jvfloat'
   }
}

J'ai aussi essayé de supprimer les define wrapper, et la définition de mon cale comme ce qui est la façon dont la la documentation suggère de le faire:

shim: {
    'jvfloat': {
        deps: ['jquery'],
        exports: 'jQuery.fn.jvfloat'
    }
}

TL;DR; Ce qui peut provoquer une bibliothèque en cours de chargement par RequireJS de ne pas avoir accès à l' define la fonction?

Était-ce utile?

La solution

Ok j'ai trouvé une solution de contournement à l'aide de la cale une partie de la RequireJS config.Ce que j'avais essayé avant de servir jvfloat comme la clé du tableau, où je devais utiliser la totalité de la chose.Donc cela fonctionne:

require.config({
  baseUrl: 'http://test.dev/cart/assets',
  paths: {
     jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
  },
  shim: {
     'js/lib/jvfloat': {
        deps: ['jquery'],
        exports: 'jQuery.fn.jvfloat'
     }
  }
});

Toujours pas d'idée de comment l'utiliser define pour quelque chose comme cela, mais, oh, eh bien, cela compte comme une solution et peut aider quelqu'un d'autre dans l'avenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top