टी एल; डॉ
आपको उपयोग करना होगा
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पोस्ट किए गए कोड में प्रीसेट को निर्दिष्ट नहीं कर रहे हैं ।