React踩坑-引用插件
最近在看react,想着把之前写的页面转换为react试试。
自己写的组件还好,当我把js插件放进去的时候出现了一个大问题!
虽然目前是解决了,但是还不知道为什么,以后补足。
# 起因
在转化原项目为React项目的过程中,由于我的页面中使用了swiper 3插件,页面一直报错。

在点击问题之后,打开了

# 问题
经过查询,当服务器配置不正确时会出现这种情况。
我猜测原因可能是creat-reac-app脚手架的默认配置(path)的限制。
# 尝试
在这之后,我尝试了几种方法
<!-- PlanA -->
<!-- html文件 -->
<script src="../src/js/swiper.js" type="text/javascript"></script>
<!-- js文件 -->
<script>
var Swiper = window.Swiper;
</script>
2
3
4
5
6
7
问题在于:没有正确引入js导致Swiper没有绑定到window上(swiper.js的文件尾有一行代码window.Swiper = Swiper;)
// <!-- PlanB -->
import Swipre from "./swiper.js"
2
问题在于swiper.js中并没有使用export,所以在文件中使用import导入是不正确的。
所以,这两种方法,都是不可以的。
# 再一次的尝试
我想了想,猜测可能是引入文件的类型与jsx不一致,即:type=text/javascript,不被当前环境认可的。
所以,我把类型换成type=text/babel,报错信息消失,但是由于文件并不是babel语法的,程序并没有执行。
之后,我尝试了绝对路径:<script src="https://cdn.bootcss.com/Swiper/3.4.2/js/swiper.js"></script>,并没有报错。
想不到为什么,可能是智商下线了......
# 解决
# PlanA
在成功调用了js之后(使用绝对路径引用js),由于swiper.js文件中包括了window.Swiper = Swiper;这样一句, 所以在引用时只需要var Swiper = window.Swiper;即可。
# PlanB
自行修改相关js文件,在swiper.js里增加export。
# PlanC
使用npm包,Swiper-Github (opens new window)。