ES2015 "आयात" नोड में काम नहीं कर रहा है v6.0.0 --harmony_modules विकल्प के साथ


80

मैं नोड v6.0.0 का उपयोग कर रहा हूं और ES2016 (ES6) का उपयोग करना चाहता हूं। हालांकि मुझे एहसास हुआ कि "आयात" वाक्यविन्यास काम नहीं कर रहा है। ES2015 में मॉड्यूलर कोड लिखने के लिए "आयात" मौलिक नहीं है? मैंने --harmony_modulesविकल्प के साथ नोड चलाने की कोशिश की, लेकिन फिर भी "आयात" के बारे में वही त्रुटि मिली। यहाँ कोड है।

"आयात" के बिना कार्य कोड:

'use strict';
let sum = 0;
class Number {

  addNumber(num1, num2) {
    return num1 + num2;
  }
}
let numberObj = new Number();
sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);

"आयात" के साथ Notworking कोड:

server.js

'use strict';
import Number from "./Number";

let sum = 0;


let numberObj = new Number();

sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);

नंबर .js

'use strict';
export default class Number {

  addNumber(num1, num2) {
    return num1 + num2;
  }
}

मैं भी http://node.green/ की जाँच कर रहा हूँ, हालांकि यह समझने में सक्षम नहीं है कि यह esharmony_modules विकल्प के साथ काम क्यों नहीं करता है। कृपया मदद करे।



2
आपको v6
chovy



सितम्बर 2016 के इस ब्लॉग पोस्ट को importनोड में ईएस 6 को लागू करने में चुनौतियों के बारे में भी देखें । ऐसा लगता है कि हम नोड में ES6 मॉड्यूल जहाज से पहले अभी भी एक लंबा रास्ता तय कर रहे हैं।
jakub.g

जवाबों:


87

वे अभी तक लागू नहीं हुए हैं।

नोड 6.0.0 पूर्ण रूप से ES6 सुविधाओं के साथ V8 के एक संस्करण का उपयोग करता है। दुर्भाग्य से मॉड्यूल उन पूर्ण सुविधाओं में से एक नहीं है।

node --v8-options | grep harmony 

प्रगति में सद्भाव के झंडे पूरी तरह से लागू नहीं होते हैं और आमतौर पर काम नहीं कर रहे हैं:

--es_staging (परीक्षण योग्य सद्भाव सुविधाओं को सक्षम ( आंतरिक उपयोग के लिए केवल ))
--harmony (सभी पूरा सामंजस्य सुविधाओं को सक्षम)
--harmony_shipping (सभी भेज दिया सद्भाव सुविधाओं को सक्षम)
--harmony_object_observe (सक्षम "सद्भाव Object.observe" ( में प्रगति ))
--harmony_modules (सक्षम "सामंजस्य मॉड्यूल" ( प्रगति में ))
--harmony_function_sent (सक्षम "सद्भाव function.sent" ( प्रगति में ))
--harmony_sharedarraybuffer (सक्षम "सद्भाव sharedarraybuffer" ( प्रगति में ))
--harmony_simd ("सद्भाव simd" ( प्रगति में ) सक्षम करें )
--harmony_do_expressions ("सद्भाव करो-अभिव्यक्तियाँ" ( प्रगति में ))
--harmony_iterator_close ("सद्भाव पुनरावृत्ति अंतिम रूप में सक्षम करें" ( प्रगति में ))
--harmony_tailcalls ("सद्भाव टेल कॉल सक्षम करें " - ( harmony_regexp_lookbehind) सक्षम करें "सामंजस्य regexp लुकअप") --harmony_species (सक्षम करें "सद्भाव Symbol.species") ) - प्रगति में )
--harmony_object_values_entries ( "सद्भाव Object.values / Object.entries" (सक्षम प्रगति में ))
--harmony_object_own_property_descriptors (सक्षम "सद्भाव Object.getOwnPropertyDescriptors ()" ( प्रगति में ))
--harmony_regexp_property (सक्षम "सद्भाव यूनिकोड regexp संपत्ति वर्गों" ( प्रगति में ) )
--harmony_function_name (सक्षम करें )सद्भाव समारोह का नाम अनुमान ")


समर्थन
सक्षम करें" ) --harmony_default_parameters ("सद्भाव डिफ़ॉल्ट पैरामीटर") -
honyony_species सक्षम करें। "सद्भाव विनाशकारी असाइनमेंट")
--harmony_destructuring_bind ("सामंजस्य विनाशकारी
बाइंडिंग सक्षम करें")
--harmony_tostring ("सामंजस्य स्थापित करने के लिए सक्षम करें" ) --harmony_regepsps (और "सामंजस्य नियमित अभिव्यक्ति एक्सटेंशन
सक्षम करें") --harmony_unicode_regexps (सक्षम करें "सद्भाव" सामंजस्य)
--harmony_sloppy ("मैला मोड में सद्भाव सुविधाओं को सक्षम करें") -
धर्म_सालोपाय_लेट ("मैला ढोने की विधा में सक्षम करें")
--harmony_sloppy_function ("सद्भाव मैला कार्य ब्लॉक
स्कूपिंग सक्षम करें ") --harmony_proxies ("सद्भाव परदे के पीछे सक्षम करें")
--harmony_reflect ("सामंजस्य प्रतिबिंबित करें API
सक्षम करें" ) --harmony_regexp_subclass ("सद्भाव regexp subclassing सक्षम करें")


13
धन्यवाद। मैं इसे देखा था, लेकिन "आयात" के रूप में अपने आप को विश्वास नहीं था ES6 के महत्वपूर्ण वाक्य रचना में से एक है
खुशी

1
@joy हाँ, उम्मीद है कि यह जल्द ही उपलब्ध होगा।
पॉल

4
@KingWu मैं सिर्फ node --v8-options | grep harmonyअद्यतन करने के बाद चलने से पाया node 6.0.0
पॉल

1
मुझे यह सुनकर बहुत खुशी हुई कि नोड 6 बाहर था, और अब उन्होंने सबसे महत्वपूर्ण विशेषताओं में से एक को लागू नहीं किया ... :(
Kokodoko

1
@SuperUberDuper उपयोग नोड 7
अली गजनी

40

यह @ पॉलप्रो के जवाब के लिए एक टिप्पणी होनी चाहिए, लेकिन मेरे पास टिप्पणी पोस्ट करने के लिए पर्याप्त प्रतिनिधि नहीं है।

के लिए विंडोज उपयोगकर्ताओं बराबर आदेश है:

node --v8-options | findstr harmony

32

मॉड्यूल लागू होने तक आप अपने कोड को चलाने के लिए बैबिल "ट्रांसपिलर" का उपयोग कर सकते हैं :

npm install --save babel-cli babel-preset-node6
./node_modules/.bin/babel-node --presets node6 ./your_script.js

देखें https://www.npmjs.com/package/babel-preset-node6 और https://babeljs.io/docs/usage/cli/

डाउनसाइड्स : इसमें विभिन्न डाउनसाइड होते हैं, जैसे अतिरिक्त संकलन समय, जो महत्वपूर्ण हो सकता है और अब आपको डीबगिंग के लिए स्रोत के नक्शे की आवश्यकता है; बस केह रहा हू।


16

जैसा कि ऊपर कहा गया है, ES6 मॉड्यूल अभी तक लागू नहीं किए गए हैं।

यह एक गैर-तुच्छ मुद्दे के रूप में ES6 मॉड्यूल को लागू करने के लिए प्रतीत होता है जो सामान्य जेएस मॉड्यूल के साथ पिछड़े-संगत होगा, जो कि वर्तमान Node.js मॉड्यूल सिंटैक्स है।

हालांकि, एक कार्यान्वयन का एक मसौदा है, जो .mjsईएस 6 मॉड्यूल युक्त फ़ाइलों के लिए - एक नई फ़ाइल एक्सटेंशन का परिचय देता है ।

इसके अलावा, एक जवाबी प्रस्ताव है जो ईएस 6 मॉड्यूल के साथ सभी फाइलों को पैकेज में घोषित करने का एक वैकल्पिक तरीका प्रस्तुत करता है।

{
    "modules.root": "/path/to/es6/modules"
}

1
मुझे लगता है कि यह एक महत्वपूर्ण बिंदु है। "द पावर्स दैट बी" अभी भी युक्ति के बारे में बहस कर रहे हैं, और फिर इसे N8 में आने से पहले v8 में प्रदर्शित होना है।
पॉल एवरिट

1
बस एक नोट: नवीनतम मसौदे को .mjsविस्तार की आवश्यकता नहीं है , जो संगतता के लिए बहुत बेहतर है।
मैथ्यू डीन

प्रश्न यह है: मुझे डाउनलोड करने के लिए ये es6 मॉड्यूल कहां मिल सकते हैं?
मार्क ब्रिलॉल्ट

यह ब्लॉग पोस्ट शुरू करने के लिए एक अच्छी जगह हो सकती है।
Роман Парадеев
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.