2015-10-02 13 views
7

हम वेबपैक और बेबेल-कोर 5.8.25 का उपयोग करके एक ऐप लिख रहे हैं।सफारी 8.0.7 पर ऑब्जेक्ट.साइन क्यों काम नहीं करता है?

समय में एक बिंदु पर, ऐसा होता है:

someArray.map(item => { 
    const updatedItem = Object.assign({}, item); // silently fails here... doesn't even continue the code 

    updatedItem.prop = 'something cool'; 
}); 

यह स्पष्ट रूप से ब्राउज़र से टकराने से पहले संकलित किया गया है। यह क्रोम के नवीनतम संस्करण और आईओएस सफारी के नवीनतम संस्करण में काम करता है, लेकिन सफारी 8.0.7 में, यह चुपचाप विफल रहता है (कोई त्रुटि नहीं फेंकती है ... बस उस रेखा से पहले नहीं जाती है)।

लेकिन यह उम्मीद (lodash का प्रयोग करके) के रूप में काम करता है:

someArray.map(item => { 
    const updatedItem = _.extend({}, item); // the important part 

    updatedItem.prop = 'something cool'; 
}); 

किसी भी विचार? मैंने इस बारे में इंटरनेट के चारों ओर पोक करने की कोशिश की, लेकिन इसका कोई फायदा नहीं हुआ।

+0

क्या आप बेबेल की पॉलीफिल लोड कर रहे हैं? 'की आवश्यकता है (' बेबेल-कोर/पॉलीफिल '); ' – loganfsmyth

+0

@loganfsmyth, स्पष्ट रूप से नहीं। मैं वेबपैक के साथ संयोजन में बेबेल-लोडर का उपयोग कर रहा हूं (और मेरा मानना ​​है कि बेबेल-लोडर बस बेबेल-कोर का लाभ उठाता है)। क्या यह ब्राउज़र के बीच कार्यक्षमता में अंतर को समझाएगा? आईओएस 9 की मोबाइल सफारी और ओएसएक्स डेस्कटॉप क्रोम में, 'ऑब्जेक्ट.साइन' संकलित ठीक काम करता है। –

उत्तर

8

Object.assign क्रोम में काम करता है क्योंकि क्रोम इसे मूल रूप से समर्थन देता है। babel-loader अपने स्वयं के ईएस 6 सिंटैक्स को ES5 सिंटैक्स में परिवर्तित करता है, यह ES6 लाइब्रेरी कार्यक्षमता को उपलब्ध कराने के लिए कुछ भी नहीं करता है। सबसे आसान तरीका करने के लिए कि Webpack

entry: ['babel-core/polyfill', 'app.js'] 

// Or with Babel 6: 
entry: ['babel-polyfill', 'app.js'] 
तो

को

entry: 'app.js' 

की तरह कुछ से अपने config बदलने के लिए है कि Webpack भी बंडल और आपके आवेदन को क्रियान्वित करने से पहले polyfill चलेंगे है के साथ। बैबेल /polyfill को पोलफिल लोड करने का एक आसान तरीका प्रदान करता है, लेकिन यह वैकल्पिक है क्योंकि हर कोई इसका उपयोग नहीं करना चाहता, और क्योंकि कई पॉलीफिल उपलब्ध हैं और एक बेबेल उपयोग करता है, core-js केवल कई में से एक है।

संबंधित मुद्दे