2016-06-02 2 views
1

J'utilise React, Webpack, Babel pour construire le projet et je souhaite qu'il s'exécute dans IE8, il y a un problème que Object.defineProperty n'est pas supporté dans IE8.Comment faire pour transformer Object.defineProperty dans IE8

Je n'ai pas utilisé cette fonction mais les paquets npm le font, comme le routeur de réaction. J'ai essayé polyfill, es5-shim, es5-sham, et beaucoup de plugins babel, mais malheureusement ne fonctionne pas pour moi ...

Alors, que puis-je faire d'autre pour cette situation?

Vraiment apprécier.

Répondre

0

En général pour le soutien de la plupart des navigateurs plus anciens, vous voulez utiliser babel-preset-es2015-loose plutôt que babel-preset-es2015, qui arrêtera plus utilisation de Object.defineProperty.

+0

Désolé pour la réponse tardive. J'utilise déjà le mode loose mais il y a une erreur dans le fichier es5.js. Le détail est 'if ('get' dans Attributs || 'set' dans Attributs) throw TypeError ('Accessors not supported!')'. En fait je ne sais pas quel code cause cette erreur ... merci beaucoup – Prometheus

+1

'Object.defineProperty' ne peut pas être transpilé. Le mode Loose indique à Babel d'éviter de l'utiliser lorsque cela est possible, mais actuellement, il peut toujours apparaître selon votre utilisation. Par exemple, 'export * from 'foo';' va générer des appels 'Object.defineProperty'. Vous devrez déboguer votre base de code et déterminer d'où proviennent les appels. – loganfsmyth

+0

J'ai déjà refactorisé le code de 'export default' et' export * 'à' module.exports', je promets qu'il n'y aura pas de problèmes dans mon code. Ce doit être l'erreur de la bibliothèque tierce, mais je ne pouvais pas le positionner. Mais merci aussi ... – Prometheus