android4.4 js 引擎兼容
原因
react 和 inferno 在安卓 4.4 下白屏的问题,虽然知道可定是 webview 的 js 引擎支撑的 api 有问题,但是 debug 没查出来;google 了一下是 babel 语法转换的问题;
Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign)都不会转码。
举例来说,ES6 在 Array 对象上新增了 Array.from 方法。Babel 就不会转码这个方法。如果想让这个方法运行,必须使用 babel-polyfill,为当前环境提供一个垫片。
处理
解决方法是安装 babel-polyfill
$ npm install --save babel-polyfill
然后在入口文件中添加
import 'babel-polyfill';
然后使用 webpack 将 babel-polyfill 增加到 vendor 中,垫片先行。
entry: {
app: './src/index.jsx',
vendor: ['babel-polyfill', ...]
}