2016-11-11 14 views
15

लापता पर त्रुटि फेंक मैं इस तरह एक आयात कुछ है:Webpack: सदस्य आयात

import { foo } from 'bar'; 

वहाँ एक रास्ता Webpack एक त्रुटि फेंक करने के लिए करता है, तो foo परिभाषित नहीं है है?

ध्यान दें कि यदि मैं कोई फर्क पड़ता हूं तो मैं बेबेल का उपयोग कर रहा हूं।

+0

वेबपैक सादा जावास्क्रिप्ट है। अगर (! foo) नई त्रुटि फेंक दें ('someError'); – Hosar

+1

मैं स्वचालित रूप से अधिक अर्थ था। मेरे पास ऐसे मामले हैं जहां मैंने गलत तरीके से 'foo' लिखा है और मुझे यह समझने में थोड़ी देर लग गई है कि समस्या क्या है। वेबपैक के रूप में देखकर इसे "आयात" करना पड़ता है, मुझे लगता है कि यह पता चलेगा कि यह परिभाषित है या नहीं? – joshhunt

+0

मुझे यह भी पसंद है। सुनिश्चित नहीं है कि यह प्रासंगिक है: https://github.com/webpack/webpack/issues/1729 – maxedison

उत्तर

4

Tobias K pointed out in the comments के रूप में, ओ थर्म जवाब गलत है। strictModuleExceptionHandling: true कॉन्फ़िगर करना एक संकलन समय त्रुटि उत्पन्न नहीं करेगा यदि आप एक मॉड्यूल आयात करने का प्रयास करते हैं जो मौजूद नहीं है।

सही कॉन्फ़िगरेशन strictExportPresence: true है, जो केवल वेबपैक v2.3.0 और बाद में उपलब्ध है। (पहले के संस्करण केवल एक चेतावनी दिखा सकते हैं, त्रुटि नहीं।)

2

output.strictModuleExceptionHandling का उपयोग करके आयात विफल होने पर त्रुटि को फेंकने के लिए वेबपैक 2 को कॉन्फ़िगर करना संभव है। कार्यक्षमता को इस पुल अनुरोध https://github.com/webpack/webpack/pull/3302 द्वारा जोड़ा गया था लेकिन इसे अभी तक दस्तावेज नहीं किया गया है। इसका इस्तेमाल करने के तरीके:

module.exports = { 
    entry: { 
     main: "./main.js", 
    }, 
    output: { 
     filename: "[name].bundle.js", 
     strictModuleExceptionHandling: true 
    } 
} 

अब अगर मैं एक फ़ाइल जो मौजूद dosn't से आयात करने की कोशिश, या मैं एक आयात जो undefined पर ले कर मैं webpack कंसोल में त्रुटि और चेतावनी संदेश मिलेगा बनाना:

WARNING in ./js/pedigree.js 
32:35-49 "export 'default' (imported as 'DisorderLegend') was not found in './disorderLegend' 

ERROR in ./js/pedigree.js 
Module not found: Error: Can't resolve './OkCancelDialogue' in '/home/tim/workspace/projects/public/js/ext-lib/panogram/js' 
@ ./js/pedigree.js 5:0-54 
@ ./js/viewerPedigree.js 
@ ./main.js 
@ multi (webpack)-dev-server/client?http://localhost:8080 ./main.js 
webpack: Failed to compile. 

क्रोम कंसोल में आप इस तरह एक चेतावनी मिल जाएगा:

warning message in chrome

+0

मेरे लिए काम नहीं करता है। मुझे अभी भी चेतावनी मिल रही है ./a.js 2: 0-1 "export 'c' '/ b'' (वेबपैक 2.2.1) में नहीं मिला था। – Pavlo

+0

कॉन्फ़िगरेशन चेतावनी संदेश सक्षम कर रहा है - आपको अभी भी आयात को ठीक करना होगा – TimRich

+0

यह नहीं है। चेतावनी संदेश 'सख्त मॉड्यूलएक्सप्शन हैंडलिंग' विकल्प पर ध्यान दिए बिना है। – Pavlo

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