rin*_*t.6 25 javascript jquery external fullcalendar browserify
我从CDN加载jQuery,当我尝试将FullCalendar导入我的脚本时会发生此错误:
未捕获错误:找不到模块'jquery'
这是我的脚本:
'use strict'
import $ from 'jquery'
import 'fullcalendar'
$('#calendar').fullCalendar()
Run Code Online (Sandbox Code Playgroud)
我正在运行此命令来转换我的脚本:
browserify index.js -t babelify -x jquery > index.min.js
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
我也试过了browserify-shim,depends: ['jquery', 'moment']但没有任何区别.
我怀疑这是因为FullCalendar JS文件有一个UMD包装,做自己的require('jquery')和require('moment'),但我认为外部标志将足够聪明来检测这一点.
我可以解决这个问题吗?
更新:这是我想要实现的最小示例,但是我的实际代码涉及比FullCalendar更多的依赖项,并且所有第三方依赖项都连接到一个vendor.min.js文件中,与我们的代码(例如index.js)分开.
小智 6
通过require('jquery')将fullcalendar工厂更改为,我能够使其工作$.
此外,无需import $ from 'jquery'在index.js文件中使用.它已经是fullcalendar npm中的依赖项.
跑完之后
browserify index.js -t babelify -x jquery > index.min.js
Run Code Online (Sandbox Code Playgroud)
编辑fullcalendar工厂函数中的index.min.js文件,其中包含:
else if(typeof exports === 'object') {
module.exports = factory(require('jquery'), require('moment'));
}
Run Code Online (Sandbox Code Playgroud)
至:
else if(typeof exports === 'object') {
module.exports = factory($, require('moment'));
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以直接在node_modules/fullcalendar/dist/fullcalendar.js文件中进行此编辑.
我希望这有帮助!