2013-07-15 24 views
5

使用的mvc4課程捆綁的JavaScript課程未捕獲的SyntaxError:意外的標記<

Uncaught SyntaxError: Unexpected token <

上裝載捆綁功能。隨着debug="true"一切都像例外工程。

我該如何解決錯誤,或者我可以禁用僅用於腳本的捆綁功能?

解決
改名爲包名稱不與任何目錄

+2

我發現很難使用MVC捆綁時,在釋放模式調試的問題,但一個錯誤,我發現自己做路過已經過壓縮JS/CSS的捆綁引擎 - 只有通過它未精縮腳本,捆綁發動機會自行縮小它 – CodingIntrigue

+0

謝謝。沒有任何縮小的JS/CSS ... –

+0

您是否正在使用適當的'@Scripts.Render()'和'@ Styles.Render()'調用?你檢查過瀏覽器控制檯,看看它返回的是什麼? – CodingIntrigue

回答

8

匹配之前,你可以回答的是什麼原因導致這個錯誤的問題,你首先要弄清楚發生錯誤的位置。捆綁代碼的唯一區別在於它被縮小。一個非常簡單的方式做,這是使用的Bundle代替ScriptBundle

 var thirdParty = new Bundle("~/bundles/thirdParty").Include(
      "~/Scripts/jquery-{version}.js", 
      "~/Scripts/bootstrap.js", 
      "~/Scripts/jquery-ui-{version}.js", 
      "~/Scripts/jquery.mockjson.js", 
      "~/Scripts/jQuery.XDomainRequest.js", 
      "~/Scripts/knockout-{version}.js" 
      ); 

     thirdParty.Transforms.Clear(); 

     bundles.Add(thirdParty); 

現在,如果你有多個JavaScript包,直到你的罪魁禍首束爲他們做這一個接一個。

我發現調試這些問題的唯一辦法就是把你的包和分裂成兩半,進一步打破它:

 var thirdParty1 = new Bundle("~/bundles/thirdParty1").Include(
      "~/Scripts/jquery-{version}.js", 
      "~/Scripts/bootstrap.js", 
      "~/Scripts/jquery-ui-{version}.js" 
      ); 

     bundles.Add(thirdParty1); 

     var thirdParty2 = new ScriptBundle("~/bundles/thirdParty2").Include(
      "~/Scripts/jquery.mockjson.js", 
      "~/Scripts/jQuery.XDomainRequest.js", 
      "~/Scripts/knockout-{version}.js" 
      ); 

     bundles.Add(thirdParty2); 

注意到,我們只禁用縮小爲一個這兩個捆綁 - thirdParty1。請確保並更新您的@Scripts.Render以指向您的新捆綁包。當你建立和重新加載時,你將繼續得到錯誤,或者你不會,然後會知道哪一半包含麻煩的代碼。但請確保和測試兩種方式,在我的示例中縮小thirdParty1並取消驗證thirdParty2,反之亦然,以確定其他事情沒有進行。您還可能想要保留DevTools或您打開的任何瀏覽器調試器,並查看捆綁包的來源,以確保它們按預期行事。

如果您有很多腳本,則可以通過將縮小的包中的腳本(在我的情況下爲thirdParty1)從未綁定的包(thirdParty2)中逐個移除或以塊的形式繼續移動。請記住在中間重建,注意不要更改腳本的包含順序。

這應該至少讓你回到有問題的文件 - 並希望搜索「<」會讓你的答案。

希望有所幫助。

+0

良好的建議和詳細 - 只有這個問題纔會得到答案。 +1 – CodingIntrigue

+0

謝謝。快樂黑客!如果你知道它是什麼,請告訴我。我很好奇。 – Grinn

0

他的解決方案幫助我,重新命名該包與目錄不同。我是這樣分組的:

@Styles.Render("~/jqueryui") 
@Scripts.Render("~/jqueryui") 

這樣用jQuery UI樣式做這件事似乎有一個錯誤。我剛更名爲:

@Styles.Render("~/jqueryuiz") 
@Scripts.Render("~/jqueryui") 

這個問題已經解決了。所以腳本似乎沒有受到這種影響,也沒有類似的捆綁包,我有大約20套捆綁加載,這是唯一的問題。

0

我的問題: 我在我的Content文件夾中引用了腳本文件,但其包名爲〜Scipts。我將我的軟件包重命名爲〜DefaultScripts並解決了我的問題。我不想引用腳本文件夾,但它是去那裏而不是我的內容文件夾。

bundles.Add(New ScriptBundle("~/Scripts").Include(
       "~/Content/assets/global/plugins/jquery.min.js", 
       "~/Content/assets/global/plugins/bootstrap/js/bootstrap.min.js", 
       "~/Content/assets/global/plugins/js.cookie.min.js", 
       "~/Content/assets/global/plugins/jquery-slimscroll/jquery.slimscroll.min.js", 
       "~/Content/assets/global/plugins/jquery.blockui.min.js", 
       "~/Content/assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js", 
       "~/Content/assets/global/scripts/app.js", 
       "~/Content/assets/layouts/layout2/scripts/layout.min.js", 
       "~/Scripts/custom.js")) 




    bundles.Add(New ScriptBundle("~/DefaultScripts").Include(
       "~/Content/assets/global/plugins/jquery.min.js", 
       "~/Content/assets/global/plugins/bootstrap/js/bootstrap.min.js", 
       "~/Content/assets/global/plugins/js.cookie.min.js", 
       "~/Content/assets/global/plugins/jquery-slimscroll/jquery.slimscroll.min.js", 
       "~/Content/assets/global/plugins/jquery.blockui.min.js", 
       "~/Content/assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js", 
       "~/Content/assets/global/scripts/app.js", 
       "~/Content/assets/layouts/layout2/scripts/layout.min.js", 
       "~/Scripts/custom.js")) 
相關問題