2014-12-03 123 views
3

我使用ASP.NET MVC 5bundling and minification,並在我的web.config中將調試設置爲false時出現奇怪的錯誤。使用ASP.NET MVC捆綁和縮小時出現奇怪的JavaScript錯誤

我一直在使用捆綁和縮小一段時間,並且只是第一次看到這個錯誤,因爲我的下拉菜單沒有工作。我無法確認這是否有效,因爲我從未檢查過這些文件。

下面是部分錯誤:

/* Minification failed. Returning unminified contents. 
(2,1): run-time error CSS1019: Unexpected token, found '!' 
(2,2): run-time error CSS1019: Unexpected token, found 'function(' 
(2,14): run-time error CSS1031: Expected selector, found ')' 
(2,14): run-time error CSS1025: Expected comma or open brace, found ')' 
(2,212): run-time error CSS1019: Unexpected token, found '(' 
(2,213): run-time error CSS1019: Unexpected token, found '"undefined"' 
(2,224): run-time error CSS1019: Unexpected token, found '!' 
(2,225): run-time error CSS1019: Unexpected token, found '=' 
(2,239): run-time error CSS1031: Expected selector, found '?' 
(2,239): run-time error CSS1025: Expected comma or open brace, found '?' 
(3): Scanner error CSS1002: Unterminated string: '></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c... 

所以我決定創建一個獨立的ASP.NET MVC項目,最低限度,只是用jQuery 2.1.1。我仍然有錯誤。所以我認爲如果我使用jQuery 1.11.1它會消失。我仍然得到同樣的錯誤。

爲什麼我得到這個錯誤?這顯然是jQuery文件中的一些東西。我在Bootstrap的JavaScript文件中遇到了同樣的錯誤。

什麼時候最好使用捆綁和縮小?只有你自己的JavaScript和CSS文件?你是否應該捆綁和縮小第三方文件,或者只是使用他們的CDN?我在工作中位於防火牆後面,因此使用外部CDN不適合我。

這裏是我的web.config:

<system.web> 
    <compilation targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2" /> 
</system.web> 

我_layout文件:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
     <meta name="viewport" content="width=device-width, initial-scale=1" /> 
     <title>My Website</title> 
    </head> 
    <body> 
     @RenderBody() 
     @Scripts.Render("~/bundles/js") 
    </body> 
</html> 

而且我BundleConfig.cs文件:

public class BundleConfig 
{ 
    public static void RegisterBundles(BundleCollection bundles) 
    { 
     bundles.Add(new StyleBundle("~/bundles/js").Include(
      "~/Scripts/jquery-{version}.js")); 
    } 
} 

產生的輸出是:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
     <meta name="viewport" content="width=device-width, initial-scale=1" /> 
     <title>My Website</title> 
    </head> 
    <body> 
     <h2>Index</h2> 
     <script src="/bundles/js?v=7gm4LP0WuTab97QPOJSizw2PGm8jrBl7HRdnANRLbBY1"></script> 
    </body> 
</html> 

它也有這2個文件的問題:

  • html5shiv.js
  • Respond.js

所以,問題是,它是無效的JavaScript錯誤或者是它的捆綁和充滿缺陷的縮小?

回答

6

有一個問題:從你的項目進入平原MVC項目

bundles.Add(new ScriptBundle("~/bundles/js").Include(
      "~/Scripts/jquery-{version}.js" 
)); 

你可能已經複製StyleBundle代碼:

bundles.Add(new StyleBundle("~/bundles/js").Include(
      "~/Scripts/jquery-{version}.js")); 

使用ScriptBundle代替StyleBundle爲適當的js文件。

+1

謝謝。我無法相信我錯過了這一點。不知道我是如何改變的。你可能是對的,我從別的地方複製粘貼它。 – 2014-12-03 08:23:02

+0

在您的'RegisterBundles'方法附近,您可以創建'RegisterStyles'和'RegisterScripts'方法,從'RegisterBundles'調用它們,我認爲這是一個很好的做法。 – Ofiris 2014-12-03 08:28:00