如何在IE8中转换Object.defineProperty

3

我使用React、Webpack和Babel构建项目,希望它能在IE8中运行,但问题在于IE8不支持Object.defineProperty函数。

虽然我没有使用这个函数,但是像react-router这样的npm包会使用它。我尝试过polyfill、es5-shim、es5-sham以及许多Babel插件,但不幸的是对我来说都没有用...

那么我还能为这种情况做些什么呢?

非常感谢。

1个回答

1
通常为了支持较旧的浏览器,您需要使用babel-preset-es2015-loose而不是babel-preset-es2015,这将停止大多数使用Object.defineProperty

抱歉回复晚了。我已经使用了宽松模式,但是在文件es5.js中出现了一个错误。详细信息是if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!')。实际上我不知道什么代码引起了这个错误...非常感谢。 - Prometheus
1
Object.defineProperty 无法转译。Loose 模式告诉 Babel 尽可能避免使用它,但是根据您的用法,它仍然可能出现。例如,export * from 'foo'; 将生成 Object.defineProperty 调用。您需要调试代码库并找出调用它的位置。 - loganfsmyth
我已经将代码从 export defaultexport * 重构为 module.exports,我保证我的代码没有问题。这一定是第三方库的错误,但我无法定位它。不过还是谢谢你... - Prometheus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接