2016-02-22 19 views
8

की संपत्ति 'दस्तावेज़' नहीं पढ़ सकता है मुझे d3.js initilization के साथ वास्तव में अजीब समस्या है। d3.js स्क्रिप्ट में, बहुत शुरुआत में, यह var d3_document = this.document; निकलने की कोशिश करता है, लेकिन यह निम्न त्रुटि पॉप:D3.js: Uncaught TypeError: अपरिभाषित

Uncaught TypeError: Cannot read property 'document' of undefined 

जब डिबगिंग, this.document रिटर्न अपरिभाषित।

मैं प्रोजेक्ट जेनरेट करने के लिए yo webapp का उपयोग कर रहा हूं। यह बिल्ड प्रक्रिया के लिए पैकेज प्रबंधक और गल्प के रूप में बोवर का उपयोग करता है (जो ES2015 सुविधाओं के लिए बेबेल का उपयोग करता है)।

मजाकिया बात यह है कि मैंने इसे xampp के साथ परीक्षण किया है और यह ठीक काम करता है!

मैं कुछ सलाह की सराहना करता हूं! Thnx!

+0

सेटअप के बारे में अच्छी जानकारी। उस विवरण के बिना, मैं इस सवाल का जवाब नहीं दे सका। –

उत्तर

9

यह कुछ ऐसा लगता है (बीएबल, सबसे अधिक संभावना) डी 3 स्क्रिप्ट फ़ाइल की शुरुआत में "use strict"; डालने या शीर्ष पर "सख्त उपयोग" के साथ इसे दूसरी फ़ाइल में संयोजित कर रहा है। इसका अर्थ है वैश्विक स्कोप पर this (या एक विशिष्ट this के बिना बुलाए गए फ़ंक्शन में) अब वैश्विक ऑब्जेक्ट का संदर्भ नहीं है, यह undefined है। ("ढीला" मोड में या एक समारोह कोई विशेष this मूल्य के साथ कहा जाता है में जबकि, this वैश्विक क्षेत्र में वैश्विक वस्तु है, जो भी वैश्विक चर `window1 के माध्यम से पहुँचा जा सकता है के लिए एक संदर्भ है।)

आप को दूर करने की जरूरत है आपके d3.js को बैबेल द्वारा परिवर्तित स्क्रिप्ट की सूची से और बस इसे शामिल करें। मान लें कि आप सामान्य d3.js फ़ाइल का उपयोग कर रहे हैं, यह इस तरह दिखता है:

!function() { 
    var d3 = { 
    version: "3.5.16" 
    }; 
    var d3_arraySlice = [].slice, d3_array = function(list) { 
    return d3_arraySlice.call(list); 
    }; 
    var d3_document = this.document; 
    // ... 
    // ... 
    // ...lots of stuff here... 
    // ... 
    // ... 
}(); 

कि ढीला मोड में चलाया जा रहा पर निर्भर करता है।

+0

Thnx, निश्चित रूप से यह बेबेल है जो स्क्रिप्ट में 'उपयोग प्रतिबंधित' 'जोड़ता है। किसी भी मुद्दे के लिए, [यहां] जाएं (http://stackoverflow.com/questions/33821312/how-to-remove-global-use-strict-added-by-babel) यह जानने के लिए कि इसे कैसे लेबल में हल किया जाए 5 और बेबेल 6। –

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