JS 无意中用了很新的 API,应该怎么检查?

项目中无意中用到了 String.prototype.replaceAll(),电脑端没问题,手机上有问题,但是手机上起初不知如何调试,怎么也找不到原因,最后浪费了几个小时(起初瞎猜手机浏览器 Fetch 不支持,改成 XHR,结果不对;然后怀疑 Vue 2 支持问题,一堆瞎试也不明白啥情况;然后又用 vConsole,一堆折腾,提示 window.fetch 用不了,最后禁用掉 vConsole 的网络功能,终于给出错误提示)

有没有 lint 能提前自动检查到这个问题?正如 Emacs 里 package-lint 能检查出 string-suffix-p 依赖于 Emacs 24.4

1 个赞

最近接触了点 JavaScript。兼容问题大家应该都是用 https://babeljs.io/ 吧?调试问题连接电脑远程调试,受限情况移动设备用 Eruda。

1 个赞

ios 是提供调试的,系统的浏览器设置里有调试选项,可以通过数据线接到电脑上,在电脑上开开发者工具。

哦,手机是Android 的。还没有用你说的调试的方法,有台 iPad 有机会试试。


更新:想试试,不知道为啥 Safari 总是卡死

eslint的ecmaVersion属性?

听说过 ESLint,还没认真用过,或许再结合上 Browserslist。

ESLint应该支持很新的js语法,防止误用很新的js语法不要用这个,可以用jshint,我为了让jshint支持es6,还写了jshint的配置文件 (setq flycheck-jshintrc "~/.emacs.d/lisp/flycheck/.jshintrc")

1 个赞

加上polyfill吧,你代码应该会用babel打包吧

{
  "presets": [ ["@babel/preset-env", { useBuiltIns: "usage" }]]
}
1 个赞

还没用上,手动复制粘贴了 polyfill 代码。下次争取用上。

手机没有js console可以看报错但是,根据点了哪个按钮后页面坏了也可以大致缩小查找范围,然后mdn或者caniuse看看api的浏览器支持?

终于还是逃不过webpack配置大师之路吗 :joy:

我以前(二三年前左右)是 macos 上 safari 加上 ios 连接调试,蛮顺畅的,基本和本机调试一样。现在我不用 mac 了,也不做这相关的,不太清楚怎么样。