2014-07-04 4 views
14

हैलो जब मैं इस प्रोजेक्ट को डेवलपर मोड (ग्रंट सर्वर) में चलाता हूं https://github.com/kennethlynne/generator-angular-xl सब ठीक है लेकिन जब मैं इसे उत्पादन मोड में चलाता हूं (गंदगी निर्माण) मुझे `Uncaught SyntaxError: सख्त मोड कोड में, फ़ंक्शंस केवल शीर्ष स्तर पर या तुरंत किसी अन्य फ़ंक्शन के भीतर घोषित किया जा सकता है

Uncaught SyntaxError: In strict mode code, functions can only be declared at top level or immediately within another function

किसी को भी कोई विचार है कि क्या हो रहा है? धन्यवाद,

Ps। मैंने कोड की बजाय प्रोजेक्ट के लिए एक लिंक पोस्ट किया क्योंकि जेएस कई फाइलों में विभाजित है।

+0

कृपया हमें उस फ़ाइल पर इंगित करें जहां यह त्रुटि हो रही है। – Bergi

+0

पर एक नज़र डालें [जावास्क्रिप्ट फ़ंक्शन नहीं मिल सकता] (http://stackoverflow.com/q/15573202/1048572)। बीटीडब्ल्यू, यह केवल सख्त मोड में अमान्य नहीं है। – Bergi

+0

@ बर्गि यह सभी कोणीय स्क्रिप्ट से minified जेएस फ़ाइल को इंगित करता है। –

उत्तर

6

तरह से मैं समस्या हल 'use strict' कि अंतिम minified लिपि में jQuery ऊपर था हटाने के द्वारा किया गया था। एक अन्य तरीका सख्त बग के बिना एक के लिए jQuery संस्करण को बदलने जा सकती है

संपादित करें: सब के बाद यह संस्करण 1.11 पर एक jQuery minification त्रुटि हुई थी, और इस के लिए एक आसान ठीक अपने ग्रंट फाइल करने के लिए जाने के लिए और बाहर टिप्पणी करने के लिए है लाइन

banner: "'use strict';\n" 
15

यह क्या त्रुटि संदेश सिर्फ कहते है:

functions can only be declared at top level or immediately within another function

आप नहीं एक अगर बयान की तरह या के लिए लूप किसी अन्य ब्लॉक के अंदर एक समारोह घोषणा डाल चाहिए।

उदाहरण:

'use strict'; 

function some() { 

    function okay() { 
    } 

    let x = 1; 

    function no_problem() { 
    } 

    if (x == 1) { 

     function BOOM() { // <- wrong! 
     } 
    } 
} 
+0

स्क्रिप्ट्स के माध्यम से मिली एकमात्र फ़ाइल जिसे फ़ंक्शन था, तुरंत किसी अन्य फ़ंक्शन के भीतर नहीं था ऐप/स्क्रिप्ट/modelsawesome.js समारोह के ऊपर एक अलग घोषणा थी, लेकिन मैंने इसे नीचे ले जाया और अभी भी –

+3

यह * घोंसला स्तर * के बारे में है, फ़ंक्शन कोड के शीर्ष के बारे में नहीं। एक परिवर्तनीय घोषणा एक ब्लॉक नहीं खोलता है। फिर भी, क्या आप उस फ़ाइल को शायद लिंक कर सकते हैं ताकि मैं दोबारा जांच कर सकूं? – Bergi

+0

हां बेशक, https://dl.dropboxusercontent.com/u/74461514/679bcc76.scripts.js –

6

के रूप में किसी को ऊपर का सुझाव दिया, आप 'use strict'; हिस्सा uncomment सकते हैं, या और भी बेहतर, बदलने अपने कार्य वाक्य रचना

बजाय

function funcName (param) { } 

उपयोग

funcName = function(param) {}; 
+0

दिलचस्प बात यह है कि जब तक यह संस्करण 4.4.4 से ऊपर नहीं था, तब तक किसी कॉर्डोवा ऐप में किसी कथन के अंदर मेरे पास कोई फ़ंक्शन नहीं था। एक पुराने टैबलेट का इस्तेमाल किया गया था जब पकड़ा गया! नोट: सख्त उपयोग के साथ भी –

0

सही जवाब के अलावा, इस भी फ़ायर्फ़ॉक्स में एक बग कुछ विशेष स्थितियों में हो सकता है।

हमारे पास एक ही उपयोगकर्ता की मशीन पर यह त्रुटि संदेश था। JavaScript फ़ाइल में विधि है कि इस त्रुटि (जो इस से प्रभावित नहीं होना चाहिए) throwed नीचे एक use strict लाइन था

यह रूप में, Firefox संस्करण 45.9.0 (और शायद पुराने संस्करणों पर एक मुद्दा हो हुआ कुंआ)। फ़ायरफ़ॉक्स को सबसे वर्तमान संस्करण में अपडेट करना (वर्तमान में 52.4) ने इस मुद्दे को हल किया।

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