我有一个简单的Ember应用程序,我需要在一个组件中使用polyfill Object.fromEntries
。
作为参考,我使用的是原生支持fromEntries
的Safari 12.1.1和不支持fromEntries
的Safari 11.1.1。
AFAIK,所有我应该需要的是一个适当的ember-cli-build.js
配置。
如果有人能告诉我为什么下面的调整不能正确地对函数进行polyfill,我将不胜感激:
const app = new EmberApp(defaults, {
'ember-cli-babel': {
// supposedly should inject core-js/stable into app
// @see https://github.com/babel/ember-cli-babel#polyfill
includePolyfill: true,
},
babel: {
// should replace injected core-js/stable with imports
// that are not natively supported by config/targets.js
// @see https://babeljs.io/docs/en/babel-preset-env#usebuiltins-entry
useBuiltIns: 'entry',
// explicitly use corejs v3 per babel-preset-env docs
corejs: 3,
// force inclusion of fromEntries regardless of config/targets.js
include: [
'es.object.from-entries',
],
},
//...
});
我可以看到它的存在:https://github.com/babel/babel/blob/v7.5.5/packages/babel-preset-env/src/polyfills/corejs3/built-in-definitions.js#L265
软件包版本:
- ember源@3.7.2
- ember-cli@3.5.0版本
- 7.5.0版的ember
- @巴别塔/核心@7.5.5
- 内核-js@3.2.1
2条答案
按热度按时间f4t66c6m1#
你的
config/targets.js
文件看起来像什么?我想知道如果polyfill不包括在内,因为你的浏览器配置只包括Safari的最新版本,所以Ember和Babel是聪明的,没有运送额外的代码。default for new apps:
仅在生产版本中包含IE11。如果您正在本地测试Safari 11,则它不会包含在该列表中。
请尝试将其更改为Safari的最新2个版本。
看看有没有帮助。
zazmityj2#
我也遇到了同样的问题,除了IE11在我的列表中,它仍然不能使用
Object.fromEntries
方法。所以这里的问题是:
useBuiltIns: 'entry'
和useBuiltIns: 'usage'
无法实现。截至本文撰写时,此问题尚未得到解决。https://github.com/babel/ember-cli-babel/issues/298我找到的解决方案是基本上绕过babel/ember/broccoli系统,就像
@babel/polyfil
的弃用通知说要做 sorta 一样。1.删除
ember-cli.build.js
文件中您添加的所有新的babel
内容,以尝试使其工作,但保留includePolyfill: true
。npm install core-js --save-dev
以直接安装corejs1.导入分解的精确多边形填充。
这是我让它工作的唯一方法。