Browserify FullCalendar с внешним jQuery
Я загружаю jQuery из CDN, и эта ошибка возникает, когда я пытаюсь импортировать FullCalendar в мои скрипты:
Неиспользуемая ошибка: не удается найти модуль "jquery"
Вот мой script:
'use strict'
import $ from 'jquery'
import 'fullcalendar'
$('#calendar').fullCalendar()
Я запускаю эту команду для преобразования моего script:
browserify index.js -t babelify -x jquery > index.min.js
Мой HTML выглядит так:
<!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>
Я также пробовал browserify-shim с помощью depends: ['jquery', 'moment']
, но это не имеет никакого значения.
Я подозреваю, что это потому, что в файле FullCalendar JS есть оболочка UMD, которая делает свои собственные require('jquery')
и require('moment')
, но я думал, что внешний флаг будет достаточно умным, чтобы обнаружить это.
В любом случае я могу обойти эту проблему?
Обновление. Это был минимальный пример того, чего я пытаюсь достичь, однако мой фактический код включает в себя гораздо больше зависимостей, чем FullCalendar, и все зависимые от третьих сторон объединяются в файл vendor.min.js
, отделенный от нашего кода (например, как index.js
).
Ответы
Ответ 1
Мне удалось заставить его работать, изменив require('jquery')
в fullcalendar factory на $
.
Кроме того, не нужно использовать import $ from 'jquery'
в вашем файле index.js. Это уже зависимость от fullcalendar npm.
После запуска
browserify index.js -t babelify -x jquery > index.min.js
Отредактируйте файл index.min.js в функции fullcalendar factory, где он читает:
else if(typeof exports === 'object') {
module.exports = factory(require('jquery'), require('moment'));
}
в
else if(typeof exports === 'object') {
module.exports = factory($, require('moment'));
}
В качестве альтернативы вы можете сделать это редактирование непосредственно в файле node_modules/fullcalendar/dist/fullcalendar.js.
Надеюсь, это поможет!