2015-05-20 7 views
40

यह काम करता है:आयात कर रहा है ES6 वाक्य रचना और गतिशील पथ का उपयोग मॉड्यूल

import app from './../app.js'; 

लेकिन यह नहीं करता है: मैं हो रही है

import app from path.join(process.cwd(), 'app'); 

:

SyntaxError: /path/file.js: Unexpected token (5:16) 
> 5 | import app from path.join(process.cwd(), 'app'); 
    |    ^

यह संभव है (और/या कैसे) "गतिशील" पथ का उपयोग करने के लिए? (पथ को हार्डकोड नहीं करना या सापेक्ष पथों पर भरोसा करना)।

+0

और हाँ, ऐप से पहले पथ आयात किया जाता है। –

उत्तर

44

नहीं, यह संभव नहीं है। ES6 मॉड्यूल को मॉड्यूल कोड निष्पादित किए बिना, उनकी निर्भरताओं को स्थिर रूप से हल करने में सक्षम होना चाहिए, ताकि import कथन विश्वसनीय रूप से कार्य कर सकें। मॉड्यूल विनिर्देशक एक स्ट्रिंग अक्षर होना चाहिए।

हालांकि, आपकी पसंद के मॉड्यूल लोडर को चर नामों के साथ मॉड्यूल की गतिशील लोडिंग का समर्थन करना चाहिए। हालांकि आप अपने मॉड्यूल स्कोप में app पहचानकर्ता को बाध्य नहीं कर पाएंगे (और इसे पुनः निर्यात नहीं कर सकते हैं), यह आमतौर पर केवल कॉलबैक में उपलब्ध होगा।

10

ईएस 6 आयात घोषणात्मक हैं और स्थिर विश्लेषण के लिए हैं। वे गतिशील नहीं हो सकते हैं।

आम तौर पर उम्मीद है कि यदि आपके पास कुछ सशर्त आयात होते हैं, तो यह निर्धारित करने के लिए अंतर्निहित पथ समाधान तर्क की ज़िम्मेदारी होगी कि कुछ स्थिर पथ के आधार पर कौन सा मॉड्यूल लोड हो।

या आप घोषणात्मक आयात के बजाय एसिंक मॉड्यूल लोडर का उपयोग करेंगे।

संबंधित मुद्दे