Brownserify FullCalendar with external jQuery

je charge jQuery à partir D'un CDN et cette erreur se produit lorsque j'essaie d'importer FullCalendar dans mon script:

erreur Uncaught: impossible de trouver le module 'jquery'

Voici mon script:

'use strict'

import $ from 'jquery'
import 'fullcalendar'

$('#calendar').fullCalendar()

j'exécute cette commande pour transformer mon script:

browserify index.js -t babelify -x jquery > index.min.js

Mon code HTML ressemble à ceci:

<!DOCTYPE html>
<div id=calendar></div>
<script src=https://code.jquery.com/jquery-2.2.0.min.js></script>
<script src=index.min.js></script>

j'ai aussi essayé browserify-shimdepends: ['jquery', 'moment'] mais il ne fait pas toute la différence.

je soupçonne que c'est parce que le fichier FullCalendar JS a un wrapper UMD qui fait son propre require('jquery') et require('moment') mais je pensais que le drapeau externe serait assez intelligent pour le détecter.

y a-t-il un moyen de contourner ce problème?

mise à jour: ceci était un exemple minime de ce que j'essaie de réaliser, mais mon code actuel implique beaucoup plus de dépendances que FullCalendar, et toutes les dépendances de tiers sont concaténées en un vendor.min.js fichier, séparé de notre code (index.js).

25
demandé sur rink.attendant.6 2016-01-30 01:47:58

1 réponses

j'ai été en mesure de le faire fonctionner en changeant require('jquery') dans l'usine fullcalendar à $.

Aussi, pas besoin d'utiliser import $ from 'jquery' dans votre index.fichier js. C'est déjà une dépendance dans le fullcalendar mnp.

Après

browserify index.js -t babelify -x jquery > index.min.js

Modifier l'index.min.fichier js dans la fonction fullcalendar factory où il se lit:

else if(typeof exports === 'object') {
    module.exports = factory(require('jquery'), require('moment'));
}

à:

else if(typeof exports === 'object') {
    module.exports = factory($, require('moment'));
}

alternativement, vous pouvez faire cette édition directement dans le node_modules/fullcalendar/dist / fullcalendar.fichier js.

j'espère que cela aide!

6
répondu pilar1347 2016-02-08 03:25:42