इससे पहले, बेबल लाइन जोड़ देगा module.exports = exports["default"]। यह अब ऐसा नहीं है। इससे पहले कि मैं क्या कर सकता है इसका मतलब है:
var foo = require('./foo');
// use foo
अब मुझे यह करना है:
var foo = require('./foo').default;
// use foo
बहुत बड़ी बात नहीं है (और मैं यह अनुमान लगा रहा हूं कि यह सब साथ होना चाहिए था)। मुद्दा यह है कि मेरे पास बहुत सारे कोड हैं जो उस तरीके पर निर्भर करते हैं जिस तरह से चीजें काम करती थीं (मैं इसे ज्यादातर ईएस 6 आयात में बदल सकता हूं, लेकिन यह सब नहीं)। क्या कोई मुझे मेरी परियोजना के माध्यम से जाने के बिना पुराने तरीके से काम करने के तरीके के बारे में सुझाव दे सकता है और इसे ठीक कर सकता है (या ऐसा करने के लिए कोडमॉड लिखने के लिए कुछ निर्देश भी बहुत चालाक होगा)।
धन्यवाद!
उदाहरण:
इनपुट:
const foo = {}
export default foo
बबैल 5 के साथ आउटपुट
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Babel 6 (और es2015 प्लगइन) के साथ आउटपुट:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
ध्यान दें कि आउटपुट में एकमात्र अंतर है module.exports = exports["default"]।
संपादित करें
आप इस ब्लॉगपोस्ट में दिलचस्पी ले सकते हैं जो मैंने अपने विशिष्ट मुद्दे को हल करने के बाद लिखा था: गलतफहमी ES6 मॉड्यूल, अपग्रेड बैबल, आँसू और एक समाधान
if (false) { require('./foo') }वेबपैक foo.jsके परिणामस्वरूप परिणामी बंडल में वास्तव में शामिल होगा ।
falseवहाँ अपने टॉगल किया जा रहा है ? यदि यह एक शर्त है जो आपके वेबपैक विन्यास में उपलब्ध है, तो एक और विकल्प हो सकता है।
export default {foo, bar}साथ module.exports = {foo, bar}। मुझे गलत तरीका पसंद आया जो अब समर्थित नहीं है।
requireअगर आपको एक कोडबेस में काम करना पड़ रहा है जो बैबेल का उपयोग करता है? संभावना है, अन्य दृष्टिकोण हैं जो आपको वैसे भी बचने की अनुमति देंगे।