'प्रतीक' बाबेल का उपयोग करने के बाद IE में अपरिभाषित है


87

मेरे पास reactjsES6 मानकों का उपयोग करते हुए एक ऐप है, और मैं webpackइसे बनाने के लिए उपयोग करता हूं । webpackभार jsका उपयोग कर मॉड्यूल babel-loader। विशिष्ट होने के लिए, मैं निम्नलिखित संस्करणों का उपयोग करता हूं: ├── babel@5.8.34 ├── babel-core@5.8.34 ├── babel-loader@5.4.0 └── webpack@1.12.6

हालाँकि, इसे बनाने के बाद IE 10 निम्नलिखित त्रुटि देता है 'Symbol' is undefinedbabelको परिभाषित नहीं किया जाना चाहिए Symbol? क्या इसके लिए कोई विशिष्ट कॉन्फ़िगरेशन है webpackया babelमुझे इसे काम करने के लिए सेट करने की आवश्यकता है? मैं {stage: 0}अपने में कॉन्फ़िगरेशन का उपयोग करता हूं .babelrc

किसी भी मदद का स्वागत किया जाएगा, आपका धन्यवाद !


1
क्या आप स्टैकट्रेस भी जोड़ सकते हैं?

जवाबों:


94

आपको अपने कोड में प्रवेश बिंदु में पॉलीफ़िल की आवश्यकता हो सकती है ताकि यह जावास्क्रिप्ट के बाकी हिस्सों के साथ बंडल हो जाए।

एक विकल्प का उपयोग करना है:

require('babel-polyfill');

या:

import 'babel-polyfill';

यह सब प्रलेखन में समझाया गया है


2
मैं इस कीड़े से घंटों लड़ रहा था! धन्यवाद
पी। ब्रायन। मैके

किसी कारण से यह मेरे लिए IE10 में काम नहीं करता है, IE11 तो मैं इसे ज्यूरोम द्वारा उल्लिखित IE के लिए एक अलग स्क्रिप्ट के रूप में शामिल कर रहा हूं। मैं शायद इसे अपने मुख्य बंडल से वेबपैक में वैसे भी विभाजित कर दूंगा।
svnm

1
नमस्कार @Jurom और @ लुकाज़, मैं एक ही मुद्दे का सामना कर रहा हूं कि प्रतीक और उसके कार्य जैसे Symbol.Iterator IE में अपरिभाषित है, इस Babel Polyfill का उपयोग करके मेरा पेज लोड नहीं हो रहा है, लेकिन IE त्रुटि से आ रहा है और पूछ रहा है पुनः लोड करें।
राहुल

1
babel-polyfillमेरे लिए इस मुद्दे को तय किया। धन्यवाद!
डेविसपिनल

68

ठीक है, मुझे अंततः पता चला कि babelअकेले पॉलीफ़िल नहीं है। स्क्रिप्ट सहित <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>मेरे लिए इस मुद्दे को हल किया।


4
वहाँ एक विधि है कि मैं केवल इस स्क्रिप्ट को HTML में inlucde कर सकता हूं जैसे: <! - [अगर IE]> स्क्रिप्ट (प्रकार = 'पाठ / जावास्क्रिप्ट')। आवश्यकता ('बेबल-कोर / ब्राउज़र-पॉलीफिल.जेएस') <! [endif] ->
PinkyJie

मैं IE11 में एक ही मुद्दा था और यह मेरे लिए भी तय की। धन्यवाद!
वाट्सएपियर 19

@Jurom, जब मैं अपने html में इस फ़ाइल को जोड़ता हूं तो मेरा IE क्रैश हो जाता है :-( कृपया मदद करें
राहुल

@Rahul IE का कौन सा संस्करण है? दुर्घटना से आपका क्या मतलब है? क्या आप त्रुटि लॉग प्रदान कर सकते हैं?
जुआरोम

IE एज। यह दिखाता है कि इंटरनेट एक्सप्लोरर काम नहीं कर रहा है। और मैं कोई लॉग उत्पन्न करने में असमर्थ हूं।
राहुल

8

यह समाधान सुनिश्चित करने के लिए काम करेगा, यह मेरे लिए काम किया जब मुझे त्रुटि का सामना करना पड़ा: IE में 'प्रतीक' अपरिभाषित है। यह क्रोम और फ़ायरफ़ॉक्स में पहले काम करता था लेकिन IE इस त्रुटि को फेंक रहा था। मुझे इस समाधान को खोजने में कुछ घंटे लगे। मैं इस समय नवीनतम प्रतिक्रिया का उपयोग कर रहा हूँ "प्रतिक्रिया": विंडोज़ मशीन पर "^ 16.5.0" प्रतिक्रिया।

1. Install babel-polyfill
npm install --save-dev babel-polyfill
In package.json, it should have the following entries

"devDependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^8.0.2",
    "babel-polyfill": "^6.26.0",
    "babel-preset-react": "^6.24.1"
  }

2. In index.js, add

    import babelPolyfill from 'babel-polyfill';

समस्या का समाधान होना चाहिए


5
यदि आप अपने सूचकांक में बैबल पॉलीफ़िल आयात करते हैं। जेएस, तो आपको इसे नियमित निर्भरता के रूप में स्थापित करना होगा, न कि एक देवता निर्भरता
पैट्रिक हंड

धन्यवाद! यह मौजूदा तरीके के साथ काम करने के लिए ie11 प्राप्त करने का एकमात्र तरीका लगता है जिसमें बेबल और वेबपैक एक साथ कोड संकलित करने के लिए काम कर रहे हैं। क्यों बैबेल पहले स्थान पर es5 मॉड्यूल का निर्माण करने के लिए es6 प्रतीकों का उपयोग कर रहा है, एक रहस्य के रूप में है, क्योंकि यह स्पष्ट रूप से पुराने ब्राउज़रों के साथ असंगत है, और पुराने ब्राउज़रों के साथ संगतता कारण बबल मौजूद है।
d13

5

ठीक है, मेरे पास एक ही मुद्दा था, लेकिन मेरे मामले में जो काफी अलग था, इसलिए मूल रूप से आपको नीचे दी गई सूची में स्क्रिप्ट को शामिल करने की आवश्यकता है:

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script>

लेकिन मेरे मामले में, मैंने पहले ही इसे शामिल कर लिया, कुछ जांच के बाद मुझे पता चला कि मेरी प्रॉक्सी ने स्क्रिप्ट को अवरुद्ध कर दिया है ...

इसलिए सुनिश्चित करें कि आप इसे index.html में शामिल करते हैं और यह भी सुनिश्चित करते हैं कि आपके पास स्क्रिप्ट तक पहुंच है जहां से होने वाली त्रुटि से बचने के लिए आपको इसकी आवश्यकता है ... सबसे अच्छा तरीका है कि ब्राउज़र में यूआरएल को कॉपी और पेस्ट करें ...

लेकिन अब जो हम इस बिंदु पर पहुँचते हैं, वह सिंबल के बारे में नहीं है, सिंबल के बारे में क्या है जिसे IE में मान्यता नहीं दी जा सकती है?

प्रतीक () फ़ंक्शन प्रकार के प्रतीक का एक मान लौटाता है, जिसमें स्थिर गुण होते हैं जो अंतर्निहित वस्तुओं के कई सदस्यों को उजागर करते हैं, स्थिर तरीके होते हैं जो वैश्विक प्रतीक रजिस्ट्री को उजागर करते हैं, और एक अंतर्निहित वस्तु वर्ग जैसा दिखता है, लेकिन एक निर्माता के रूप में अधूरा है क्योंकि यह वाक्यविन्यास "नया प्रतीक ()" का समर्थन नहीं करता है।

प्रतीक () से लौटाया गया प्रत्येक प्रतीक मूल्य अद्वितीय है। एक प्रतीक मूल्य का उपयोग वस्तु गुणों के लिए एक पहचानकर्ता के रूप में किया जा सकता है; यह डेटा प्रकार का एकमात्र उद्देश्य है। उद्देश्य और उपयोग के बारे में कुछ और स्पष्टीकरण प्रतीक के लिए शब्दावली प्रविष्टि में पाया जा सकता है।

डेटा प्रकार का प्रतीक एक आदिम डेटा प्रकार है।


1
यह मेरे लिए भी तय किया। मैंने बैबेल ऑनलाइन कंपाइलर का उपयोग किया और इस स्क्रिप्ट को अपने HTML, वॉइला में शामिल किया।
विक्टरएमएस

1
मैं इस एक लाइन काम करता है पर विश्वास नहीं कर सकता! दिनों के लिए प्रतिक्रिया + सामग्री यूआई के लिए पॉलीफ़िल का पीछा करते हुए और यह सब एक लाइन के साथ तय किया।
jpro

4

प्रलेखन में रनटाइम के बारे में

// in bash
npm install babel-transform-runtime --save-dev

// in gulpfile
.pipe(babel({
  plugins: ['transform-runtime']
}))

संपादित करें: बेहतर अभी तक ठग मोड उपयोग --save के बजाय -save- देव में बेहतर है


इस मॉड्यूल को अब कहा जाता है@babel/plugin-transform-runtime
केविन रेली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.