两个营销插件单独用都正常 一起启用后报 $(...).slick is not a function 清掉其中一个再恢复就没事 断点里看 window.jQuery.fn.jquery 的版本和页面顶部引的那个对不上。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,两个插件都把 jQuery 打进自己的包并挂回 window 后执行的那个覆盖先前的 先前插件注册的方法就丢了 版本不同时表现更明显 排查起来很费时间。

「重复打包 jQuery」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。改完顺手把文档补一句,省得下次自己重新推一遍。

console.log(window.jQuery.fn.jquery);
console.log(typeof window.jQuery.fn.slick);

监控和日志的时间要对上,时区不一致会多绕很大一圈。

具体做法是,在控制台打印版本和插件方法 先确认被覆盖这件事;让其中一方改用 noConflict 或者都复用页面统一引入的那份;三方代码都改不了 就把两个插件放到不同页面或不同 iframe。

最后用这个标准收尾,两个插件同时启用都能正常跑 页面里只保留一份 jQuery 版本号也固定了。

作者 9823189