2014-07-04 23 views
14

Bu projeyi Geliştirici modunda çalıştırdığımda Merhaba (grunt sunucusu) https://github.com/kennethlynne/generator-angular-xl Her şey yolunda değil, ancak üretim modunda çalıştırdığımda (homurdanan yapı) Neler olduğu hakkında bir fikrim var mı? Teşekkür ederiz,Yakalanmamış SyntaxError: Sıkı mod kodunda, işlevler yalnızca en üst düzeyde veya başka bir işlev dahilinde bildirilebilir

Ps. JS'nin birçok dosyaya bölünmesinden beri kod yerine projeye bir bağlantı gönderdim.

+0

Lütfen bizi bu hatanın oluştuğu dosyaya yönlendirin. – Bergi

+0

[Javascript işlevi bulunamadı] 'a bir göz atın (http://stackoverflow.com/q/15573202/1048572). Btw, bu sadece sıkı modda geçersiz değil. – Bergi

+0

@Bergi, tüm angularjs komut dosyalarından indirgenmiş JS dosyasına işaret eder. –

cevap

6

sorun çözüldü yolu son küçültülmüş komut jquery üzerindeydi 'use strict' kaldırarak oldu. Bir başka yolu sıkı hata olmadan birine jQuery sürümü değişen edilebilir

DÜZENLEME: Sonuçta o sürümü 1.11 üzerinde bir jQuery küçültme hatası vardı ve bunun için kolay bir düzeltme sizin Grunt dosyasına gidip kapatmaktır birisi yukarıda önerildiği gibi çizgi

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

hata mesajı diyor sadece ne:

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

Sen bir if deyimi gibi ya For döngüsü, diğer herhangi bir bloğunun içinde bir işlev bildirimi koymak değil gerekir.

Örnek:

'use strict'; 

function some() { 

    function okay() { 
    } 

    let x = 1; 

    function no_problem() { 
    } 

    if (x == 1) { 

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

Hemen başka bir fonksiyonda olmayan bir fonksiyona sahip komut dosyaları aracılığıyla bulduğum tek dosya app/scripts/modelsawesome.js idi Fonksiyonun üzerinde bir var bildirimi vardı, ama aşağıya taşıdım ve hala hiçbir şey yapmadım –

+3

Bu, * kodlama seviyesi *, fonksiyon kodunun üst kısmı hakkında değil. Bir değişken beyanı bir blok açmaz. Yine de, bu dosyayı belki bir kez daha kontrol edebilir miyim? – Bergi

+0

evet tabiki, https://dl.dropboxusercontent.com/u/74461514/679bcc76.scripts.js –

6

sizin fonksiyon sözdizimi, sen 'use strict'; bölümünü yorumsuz edebilir veya daha iyisi, değiştirmek

yerine

function funcName (param) { } 

doğru cevaplara ek olarak kullanım

funcName = function(param) {}; 
+0

İlginç bir şekilde, bir Cordova uygulamasında, 4.4.4 sürümü üzerinde olduğu sürece herhangi bir sorun olmadan bir if ifadesinin içinde bir işlev yaşadım. Eski bir tablet kullanıldığında yakalandım! NOT: kullanımda bile sıkı –

0

, bu da bazı spesifik senaryolarda FireFox bir hata olabilir.

Tek bir kullanıcının makinesinde bu hata mesajını aldık. JavaScript dosyasında

Sanki, FireFox Sürüm 45.9.0 (ve belki daha eski sürümlerinde bir sorun oldu altına (bundan etkilenmemesi gerektiğini) Bu hatayı throwed yöntem use strict hattı oldu iyi). Firefox'u en güncel sürüme güncellemek (şu anda 52.4) sorunu çözdü.

İlgili konular