टी एल; डॉ
आपको उपयोग करना होगा
require('./app').default();
व्याख्या
बैबल 5 के लिए एक संगतता हैक किया जाता था export default
: यदि एक मॉड्यूल में केवल एक निर्यात होता है, और यह एक डिफ़ॉल्ट निर्यात था, तो इसे सौंपा गया था module.exports
। तो, उदाहरण के लिए, अपने मॉड्यूल app.js
export default function () {}
यह करने के लिए स्थानांतरित किया जाएगा
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = function () {};
module.exports = exports["default"];
यह पूरी तरहrequire
से बैंग-ट्रांसप्लड मॉड्यूल (जैसे आप कर रहे हैं) के साथ संगतता के लिए किया गया था । यह असंगत भी था; यदि किसी मॉड्यूल में नामित और डिफ़ॉल्ट दोनों निर्यात होते हैं, तो यह require
-d नहीं हो सकता है ।
वास्तव में, ES6 मॉड्यूल कल्पना के अनुसार, एक डिफ़ॉल्ट निर्यात नाम के साथ एक नामित निर्यात से अलग नहीं हैdefault
। यह सिंटैक्टिक शुगर है जिसे संकलित समय पर सांख्यिकीय रूप से हल किया जा सकता है, इसलिए यह
import something from './app';
इस के रूप में ही है
import { default as something } from './app';
यह कहा जा रहा है, ऐसा प्रतीत होता है कि बाबेल 6 ने मॉड्यूल ट्रांसप्लिंग करते समय इंटरऑपरेबिलिटी हैक को छोड़ने का फैसला किया। अब, अपने मॉड्यूल app.js रूप transpiled है
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function () {};
जैसा कि आप देखते हैं, कोई और असाइनमेंट नहीं है module.exports
। करने के लिए require
इस मॉड्यूल, आप सब करने की ज़रूरत
require('./app').default();
.babelrc
? क्या आप कहीं बाबेल विकल्पों को निर्दिष्ट कर रहे हैं? मैं पूछता हूं क्योंकि बैबल 6 डिफ़ॉल्ट रूप से कुछ भी ट्रांसपाइल नहीं करता है और आप अपने द्वाराes2015
पोस्ट किए गए कोड में प्रीसेट को निर्दिष्ट नहीं कर रहे हैं ।