明明之前的vue脚手架项目,都可以在手机上预览吖,为啥这次不行呢Ծ‸Ծ
甚至明明title都在网栏上显示了Ծ‸Ծ
可是就是页面空白啊Ծ‸Ծ
电脑上面的chrome也不存在问题Ծ‸Ծ
对于菜鸡来说,真的是困扰Ծ‸Ծ
手机要怎么开启开发者模式呢,菜鸡不知道啊
然后,菜鸡才发现,原来Safari调试成功,手机上也会是成功的
菜鸡准备行动了
Step 1 获得可调式的Safari
目前Safari发布了可调试的版本Safari Technology Preview,但是对于苹果系统版本有限制,貌似是只支持有touchBar的新版
不过一般的Safari也支持开发者模式哒~
在Safari偏好设置中,高级选项,勾选“显示开发菜单”
Step 2 调试
用Safari开始调试项目之后,又发现localhost:8080无法访问。。。。
因为苹果系统自己占用了8080端口,所以需要修改脚手架默认的端口号
// 在vue.config.js中增加配置
devServer: {
port: 8888, // 修改为你需要的端口号
}
终于在Safari中打开了项目,依旧是白屏,但是可以看调试台的报错啦!
SyntaxError: Invalid regular expression: invalid group specifier name
网上查了查,似乎是因为Safari对于正则的支持问题,打包后的js不支持原生的双斜线格式的正则 传送门
因为项目里的确用了正则,所以把全部的正则从双斜线修改为
// 打包情况下会报错
let regExp = /(?<=:(?!\/).*?\/).*!/g;
// 修改为下面的格式即可
let regExp = new RegExp("(?<=:(?!\/).*?\/).*!", 'g');
emmm, 但是依旧报错
SyntaxError: Invalid regular expression: invalid group specifier name
继续搜索,发现ios微信小程序、ios微信浏览器以及Safari都不支持零宽断言,而我的项目里也确实有呢!而且报错也和这个差不多
所以肯定把之前的正则都改一遍啊
但是依旧报错😊
SyntaxError: Invalid regular expression: invalid group specifier name
我定位了报错的语句,发现似乎不是我写正则的位置,而是一开始就不支持打包文件内的eval语句,所以把正则的部分先遮住。
果然,运行后还是报错
SyntaxError: Invalid regular expression: invalid group specifier name
Step 3 解决
既然不是正则的问题,那么就是脚手架打包后的文件出了问题
更换关键词搜索之后,看到了类似的问题【踩坑】Safari不兼容webpack封装的vue项目
似乎是浏览器不支持ES6语法,那么就装babel-polyfill试试看
npm install --save babel-polyfill
因为脚手架不支持在vue.config.js中配置webpack,所以直接在main.js中引入
import 'babel-polyfill'
TADA ~
在安装插件之后,Safari和手机都可以预览项目啦
PS : ios中时间戳的坑 new Date(‘2019-01-22 11:11:11’).getTime() 为 NaN
ios里面不支持“2019-01-22 11:11:11”形式的Date字符串,需将字符串转换成“2019/01/22 11:11:11”,