Promise未定义坑
- 问题描述
webpack + babel-loader + transform - runtime正常来讲是可以实现没有原生支持Promise的浏览器下正常运行,但是在低版本系统中还是出现Promise未定义的错误。
- 分析
1. 确认transform-runtime是否生效在编译生成的js代码中查看到
var Promise = win.Promise || __webpack_require__(41);
说明Promise是被替换调了,说明有代码超出了babel调控制范围。
2. 问题思考
可能出问题调就是node_modules第三方依赖模块或者webpack打包生成的代码可能出问题。node_modules第三方依赖模块,可能npm包中在webpack配置中不需要babel的编译,而这些包可能需要原生的Promise支持。这种情况需要排查,进过排查没有因为npm包引起。现在只可能是webpack本身产生的代码 引起的。其中webpack官网上有描述:
当webpack使用异步加载模块时ÿ