Quando si compila un Reagire e Redux applicazione con Webpack e Babel ottengo:Impossibile assegnare alla sola lettura proprietà '__esModule'
Uncaught TypeError: Cannot assign to read only property '__esModule' of #<Object>
In alcuni browser meno recenti (< = Chrome 1, Android 4, Safari 5).
Questo problema sembra derivare da redux e react-redux emettere la linea exports.__esModule = true;
nel lib
costruzione, ma la mia domanda utilizzando Object.defineProperty
invece (perché build loosely e io non lo fanno).
due soluzioni sono:
Costruire la mia applicazione in modalità
loose
anche.Importare
react-redux/src
eredux/src
e costruirlo con lo stesso .babelrc dell'applicazione (non è tutto allentato).
Finché sono coerenti ed entrambi:
Object.defineProperty(exports, "__esModule", {
value: true
});
e exports.__esModule = true;
non lo fanno coesistere nella mia uscita, tutto funziona.
La mia domanda è, qual è la soluzione giusta? Perché questo riguarda solo i browser più vecchi? E perché entrano in conflitto?
Questo è un similar question.
Non sono sicuro del motivo. Viene assegnato solo una volta all'inizio di un modulo, nulla dovrebbe mai riassegnarlo, quindi l'errore è molto strano. Sei in grado di vedere dove sta lanciando l'errore reale? – loganfsmyth
Getta nel primo modulo importato dove 'exports .__ esModule = true;' è presente. Presumo che dopo il primo 'Object.defineProperty' si chiami che l'oggetto delle esportazioni condivise diventa di sola lettura, quindi l'assegnazione interrompe i moduli successivi che sono stati generati liberamente (ma solo i getti nei browser menzionati). Potrei mancare completamente il marchio poiché non riesco a scoprire a chiunque altro questo problema oltre al link fornito. –
Questo è quello che mi confonde però. 'exports' non è condiviso, dovrebbe essere solo ambito in un singolo modulo. – loganfsmyth