我正在编写一个使用新的 es6 Promise 的 JavaScript 库。我可以在 Firefox 中测试该库,因为 Promise 已定义。但是,当我尝试使用 Karma 和 PhantomJS 测试我的代码时,出现错误Can't find variable: Promise.
。我猜测这是因为 PhantomJS 浏览器还不支持 es6 Promise。
我如何配置 Karma 来为 Promise 引入 Polyfill?
您只需安装即可引入 Babel polyfillBabel Polyfill https://www.npmjs.com/package/babel-polyfill:
npm install --save-dev babel-polyfill
然后将 polyfill 文件包含在源文件和测试文件之前files
你的部分karma.conf.js
:
files: [
'node_modules/babel-polyfill/dist/polyfill.js',
'index.js', //could be /src/**/*.js
'index.spec.js' //could be /test/**/*.spec.js
],
除非您知道所有目标浏览器都支持 Promise,否则您可能也想将此填充应用到您发布的版本中。
如果您真的喜欢冒险,您可以使用 Browserify 拉取文件以使您的测试更加模块化,然后使用 Babelify 将 ES6 转换为 ES5。我创建了一个包含这些内容的示例项目以及涉及 Promise(在 PhantomJS2 上运行)的工作测试以供参考 https://gist.github.com/spikeheap/3dfcf46caf60bf076edc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)