即使使用填充程序,也未定义Object.values()

时间:2018-01-03 16:16:00

标签: javascript ecmascript-6 shim

我正在努力找出为什么不使用Object.values的垫片。错误监控不断引发如下问题:

Object.values is not a function. (In 'Object.values(L)', 'Object.values' is undefined)

问题在于我认为我为不支持Object.values的浏览器提供了垫片:

// index.js

import 'es6-shim';
// ...


if (!Object.values) {
  require('object.values').shim();
}

global.App = {
  ...components,
  ...directives,
  ...mixins,
  ...filters,
  ...utils,
};

global.Vue = Vue;

global.ComponentsBootstrap = function ComponentsBootstrap(Vue) {
  if (process.env.NODE_ENV === 'production') {
    Raven
      .config('http://...')
      .addPlugin(RavenVue, Vue)
      .install()
    ;
  }

  const { provideComponents, provideDirectives, provideFilters } = global.App;

  Vue.use(provideComponents);
  Vue.use(provideDirectives);
  Vue.use(provideFilters);
};

代码的使用方式如下:

 <script src="dist/components/app.js"></script>

 <script>
     ComponentsBootstrap(Vue);
     // include other components that use `Object.values()`
 </script>

是因为在function ComponentsBootstrap内没有调用require('object.values')。shim()吗?

1 个答案:

答案 0 :(得分:0)

在IE11中运行的某些ES6代码上使用es6-shim作为polyfill时遇到了同样的问题。听起来像es6-shim几乎没有通过es7-shim解决的间隙,例如https://github.com/es-shims/es7-shim