2017-04-23 3 views
0

본질적 웹팩 번들의 시작 부분에서 일부 코드를 추가 IE8에 오류 원인Webpack의 부트 스트랩을 Object.defineProperty를 가진 IE8과 통합하는 방법은 무엇입니까?

/******/ // define getter function for harmony exports 
/******/ __webpack_require__.d = function(exports, name, getter) { 
/******/  if(!__webpack_require__.o(exports, name)) { 
/******/   Object.defineProperty(exports, name, { 
/******/    configurable: false, 
/******/    enumerable: true, 
/******/    get: getter 
/******/   }); 
/******/  } 
/******/ }; 

(Object.defineProperty가 정의되어있다).

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 

var obj = (_obj = {}, _defineProperty(_obj, "x" + foo, "heh"), _defineProperty(_obj, "y" + bar, "noo"), _defineProperty(_obj, "foo", "foo"), _defineProperty(_obj, "bar", "bar"), _obj); 

내 모든 코드 (특수 저장소를이 재현 :이 문제를 (내가 다른 곳에 사용하려는 경우 그것을 위해 스텁을 생성) 안 그래서 나는 로더로 바벨에게 es2015-loose 사전 설정을 사용하고 있습니다 문제)는 here, pointing to particular commit입니다. validate.sh 어설 션을 실행하여이를 확인할 수 있습니다.

답변

0

Webpack 지원 ES5 이상. IE8은 ES3를 실행하므로 ES5 코드를 실행할 수 있으려면 polyfill이 필요합니다. Webpack 구성에 ES5 shim loader를 추가 할 수 있습니다. 또한 NODE_ENV를 Production으로 설정해야하며 빈 디스크립터에 오류가 발생하지 않습니다.

Object.defineProperty({},'a',{}); 

그래서, 이것은 우리가이 오류를 극복 할 수있는 방법이지만 문제는 기술자가 비어 있지 않은 경우 어떤 일이 발생한다 남아? 즉, 값이 제공되지 않으면 get 및 set은 제공되지 않지만 구성 가능하고, 열거 가능하며, 쓰기 가능합니까? 대답은 IE8에서 자동으로 실패합니다 (이는 문서화 된 동작입니다).

관련 문제