Javascript 无法对Ember中的Object.fromEntries进行多边形填充

Javascript 无法对Ember中的Object.fromEntries进行多边形填充,javascript,ember.js,babeljs,babel-polyfill,core-js,Javascript,Ember.js,Babeljs,Babel Polyfill,Core Js,我有一个简单的余烬应用程序,我需要在组件中填充对象。fromEntries 作为参考,我使用Safari 12.1.1本机支持fromEntries,而Safari 11.1.1不支持 好了,我只需要一个合适的ember cli build.jsconfig 如果有人能告诉我为什么以下调整不能正确填充函数,我将不胜感激: const-app=new-app(默认值{ “灰烬之塔”:{ //应该将核心js/stable注入到应用程序中 //@见https://github.com/babel/em

我有一个简单的余烬应用程序,我需要在组件中填充
对象。fromEntries

作为参考,我使用Safari 12.1.1本机支持
fromEntries
,而Safari 11.1.1不支持

好了,我只需要一个合适的
ember cli build.js
config

如果有人能告诉我为什么以下调整不能正确填充函数,我将不胜感激:

const-app=new-app(默认值{
“灰烬之塔”:{
//应该将核心js/stable注入到应用程序中
//@见https://github.com/babel/ember-cli-babel#polyfill
includePolyfill:true,
},
巴别塔:{
//应使用导入替换注入的core js/stable
//config/targets.js本机不支持的
//@见https://babeljs.io/docs/en/babel-preset-env#usebuiltins-入口
使用内置项:“条目”,
//根据babel预设环境文档显式使用corejs v3
corejs:3,
//无论config/targets.js如何,强制包含fromEntries
包括:[
“es.object.from条目”,
],
},
//...
});
我可以看到它就在那里:


软件包版本:

  • 余烬-source@3.7.2
  • 余烬-cli@3.5.0
  • 余烬cli-babel@7.5.0
  • @巴别塔/core@7.5.5
  • 核心-js@3.2.1

您的
config/targets.js
文件是什么样子的?我想知道polyfill是否不包括在内,因为您的浏览器配置只包括最新版本的Safari,所以Ember和Babel很聪明,没有提供额外的代码

委员会:

仅在生产版本中包含IE11。如果您在本地测试Safari 11,它将不包括在该列表中

尝试将其更改为Safari的最后两个版本

const browsers = [
  'last 1 Chrome versions',
  'last 1 Firefox versions',
  'last 2 Safari versions'
];


看看这是否有帮助。

除了IE11在我的列表中,它仍然不能使用
对象.fromEntries
方法之外,我还有同样的问题

所以这里的问题是:

  • Ember/Brocoli使用了一个时髦的模块系统,使得
    useBuiltIns:“entry”
    useBuiltIns:“usage”
    不可能实现。在撰写本文时,这个问题尚未解决
  • include语法基本上不起作用 我找到的解决方案基本上就是绕过babel/ember/Brocoli系统,就像
    @babel/polyfil
    弃用通知中说的那样

  • 删除
    ember cli.build.js
    文件中所有新的
    babel
    内容,您添加了这些内容以尝试使其工作,但保留
    includePolyfill:true
  • npm安装corejs——保存dev
    直接安装corejs
  • 导入爆炸的精确多边形填充
    这是我让它工作的唯一方法

    在我看来这是正确的。确保您正在停止并重新启动
    ember-serve
    命令以注册对此特殊文件的更改。你能详细说明你看到的错误吗?只是在safari中不起作用?@jrjohnson是的,每次配置更改后我都会重新启动,在没有缓存的情况下重新加载。然而,当我使用
    Object.fromEntries
    时,无论我的polyfill配置如何,Safari 11都会说“Object.fromEntries不是函数”,Safari 12在使用它的页面上运行良好。当我使用Safari开发工具时,我可以看到v12有一个本机
    对象。fromEntries
    实现,而v11没有定义它。也许我对这些选项如何工作的假设是错误的。我找不到关于这个案例的明确的余烬指南。更清楚的是,我可以看到更改配置的效果,例如,如果我将
    useBuiltIns
    更改为
    usage
    ,那么构建无法找到一些
    核心js
    导入(这看起来也很奇怪,但情况不同)如果我添加一个不存在的polyfill作为一个
    包含
    ,那么它会抛出一个构建错误,正如您所期望的那样。
    const browsers = [
      'last 1 Chrome versions',
      'last 1 Firefox versions',
      'last 2 Safari versions'
    ];
    
    
    import "core-js/es/object/from-entries";