2014-07-04 23 views
14

你好宣佈,當我在開發模式(咕嚕服務器)https://github.com/kennethlynne/generator-angular-xl一切正常,但是當我在生產模式運行(運行此項目咕嚕生成)我得到一個'未捕獲的語法錯誤:在嚴格模式下的代碼,功能只能在頂層或立即在其他功能

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

任何人有任何想法是怎麼回事? 謝謝,

詩篇。我發佈了一個鏈接到項目而不是代碼,因爲JS被分割成許多文件。

+0

請帶我們去哪裏該發生錯誤的文件。 – Bergi

+0

看一看[JavaScript函數無法找到(http://stackoverflow.com/q/15573202/1048572)。順便說一句,這只是在嚴格模式下無效。 – Bergi

+0

@Bergi它指向所有angularjs腳本中縮小的JS文件。 –

回答

6

我解決了這個問題的方式是通過除去'use strict',這是在最終縮小的腳本jquery的上方。另一種方式可以改變的jQuery版本,一個不嚴格的漏洞

編輯:畢竟這是在1.11版本jQuery的微小誤差,以及簡單的辦法解決,這是去你的步兵文件,並註釋掉行

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

這只是什麼錯誤消息說:

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

不得把一個函數聲明任何其他塊內,像if語句或for循環。

實施例:

'use strict'; 

function some() { 

    function okay() { 
    } 

    let x = 1; 

    function no_problem() { 
    } 

    if (x == 1) { 

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

我通過腳本發現的函數不是在另一個函數中立即發現的唯一文件是app/scripts/modelsawesome.js在函數的上面有一個var聲明,但是我將它移動到下面並且什麼也沒有。 –

+3

它關於*嵌套級別*,而不是關於函數代碼的頂部。變量聲明不會打開塊。不過,你是否可以鏈接該文件,以便我可以仔細檢查? – Bergi

+0

是的,當然,https://dl.dropboxusercontent.com/u/74461514/679bcc76.scripts.js –

6

正如上面有人建議,你可以取消的'use strict';部分,甚至更好,改變你的函數語法

,而不是

function funcName (param) { } 

使用

funcName = function(param) {}; 
+0

有趣的是,我已經在Cordova應用程序中的if語句中有一個函數,只要它高於版本4.4.4就沒有任何問題。當使用舊版平板電腦時遇到了問題!注意:即使使用嚴格 –

0

除了正確的答案,這可能可以在Firefox中的錯誤在一些特定的場景。

我們有一個單用戶的機器上此錯誤消息。在JavaScript文件有低於一個use strict是扔這個錯誤(應該不受此影響)的方法

它碰巧在火狐版本45.9.0(也許是舊版本的問題,因爲好)。將Firefox更新到最新版本(當前爲52.4)解決了這個問題。