2016-06-07 12 views
1

Hier ist die unveränderliche Rekord Klassendefinitionunveränderliche Rekord versagt GETIN in IE10

import Immutable, {Record} from 'immutable'; 

const FEATURE_DEFAULTS = { 
    name: null, 
}; 

export class Feature extends Record(FEATURE_DEFAULTS) { 
} 

Eine Instanz auf diese Weise initialisiert:

const featureName = 'a value'; 
const b = new Feature({ name: featureName }); 

console.log(b.getIn(['name'])); 

In den meisten modernen Browsern (Chrom, Safari, etc.), es funktioniert . Es gibt den Wert in dem Feld name wie erwartet aus.

jedoch in IE10, b.getIn(['name']) throw diese Ausnahme: Unable to get property 'hasOwnProperty' of undefined or null reference

enter image description here

Mehr Infos über mein Projekt, verwendet es diese Abhängigkeiten

"immutable": "^3.8.1", 
"react": "^15.1.0", 
"react-chartist": "^0.10.1", 
"react-dom": "^15.1.0", 
"react-intl": "2.1.2", 
"react-redux": "^4.4.5", 
"react-router": "^2.4.1", 
"redux": "^3.5.2", 
"redux-thunk": "^2.1.0", 
"reselect": "^2.5.1", 

ich auch babel bin mit es6 Syntax

übersetzen
"babel-core": "^6.9.1", 
"babel-eslint": "^6.0.4", 
"babel-loader": "^6.2.4", 
"babel-polyfill": "^6.9.1", 
"babel-preset-es2015": "^6.9.0", 
"babel-preset-react": "^6.5.0", 
"babel-preset-stage-0": "^6.5.0", 
"babel-register": "^6.9.0", 
"babel-runtime": "^6.9.2", 

Wie kann ich dieses Problem beheben?

EDIT: Ich denke, die Ausnahme von hier geworfen wird:
https://github.com/facebook/immutable-js/blob/38019326a8d006a45ef48d9c4644e23ea476d298/src/Record.js#L55

Antwort

1

Ich finde eine Lösung von Babels Bug-Tracker https://phabricator.babeljs.io/T3041

Grundsätzlich sind die einzelnen Schritte:

  • npm installieren babel-plugin-transform-class-properties

  • npm installieren babel-Plugin-Transformations-es2015-classe

  • diese Plugins zu .babelrc hinzufügen:

    "plugins": [ 
         "transform-class-properties", 
         ['transform-es2015-classes', {loose: true}] 
        ]