[采坑记录]vue.cli打包项目在iphone上无法预览

1,701 阅读2分钟

明明之前的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”,