2013-07-15 7 views
5

Mit dem Bündel Merkmal mvc4 KurseBündelung JavaScript Kurse Uncaught Syntaxerror: unerwartete Token <

Uncaught SyntaxError: Unexpected token <

auf Laden. Mit debug="true" funktioniert alles wie freigestellt.

Wie kann ich den Fehler lösen oder kann ich die Bundle-Funktion nur für Skripte deaktivieren?

Gelöst
des Bündelnamens Umbenannt in nicht mit einem beliebigen Verzeichnis

+2

Ich fand es zu debuggen Probleme im Release-Modus schwierig, wenn MVC Bündelung, aber ein Fehler, den ich fand mich machte bereits minimierte JS/CSS die Bündelung Motor vorbei - es ist nur un-minimierte Skripte übergeben, die Bündelung Motor wird es selbst verkleinern – CodingIntrigue

+0

Danke. Haben Sie keine verkleinerten JS/CSS ... –

+0

Verwenden Sie die entsprechenden '@ Scripts.Render()' und '@ Styles.Render()' Anrufe? Hast du die Browser-Konsole überprüft, um zu sehen, was sie zurückgibt? – CodingIntrigue

Antwort

8

übereinstimmen Bevor Sie die Frage beantworten können, was den Fehler verursacht hat, müssen Sie zuerst herausfinden, wo der Fehler auftrat. Der einzige Unterschied in der Syntax Ihres Codes beim Bundle besteht darin, dass er minimiert ist. Eine sehr einfache Möglichkeit, dies zu tun, ist die Verwendung eines Bundle anstelle eines 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); 

Nun, wenn Sie mehrere JavaScript-Bundles haben, diese eins nach dem anderen für sie tun, bis Sie den Täter Bündel haben.

Der einzige Weg, die ich gefunden habe, um diese Probleme zu debuggen ist Ihr Bündel zu nehmen und teilen es in der Hälfte, um sie aufzubrechen weiter:

 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); 

Beachten Sie, dass wir nur für einen behinderten minification haben von die zwei Bündel - thirdParty1. Seien Sie sicher und aktualisieren Sie Ihre @Scripts.Render, um auf Ihre neuen Bundles zu verweisen. Wenn Sie das Build erstellen und neu laden, erhalten Sie entweder weiterhin den Fehler, oder Sie werden es nicht tun und dann wissen, welche Hälfte den problematischen Code enthält. Aber seien Sie sicher und testen Sie beide Wege, thirdParty1 und thirdParty2 in meinem Beispiel zu reduzieren und umgekehrt, um sicher zu sein, etwas anderes geht nicht weiter. Sie sollten auch DevTools oder einen anderen Browser-Debugger, den Sie geöffnet haben, behalten und sich die Quelle Ihrer Pakete ansehen, um sicherzustellen, dass sie wie erwartet funktionieren.

Weiter durch die Skripte aus dem minimierte Bündel (thirdParty1 in meinem Fall) aus dem unminified Bündel (thirdParty2) entweder einen nach dem anderen oder in Stücken zu bewegen, wenn Sie eine Menge von Skripten haben. Denken Sie daran, dazwischen zu erstellen, und achten Sie darauf, die Einschlussreihenfolge Ihrer Skripts nicht zu ändern.

Das sollte Sie wenigstens zu der Datei führen, die das Problem hat - und hoffentlich nach "<" suchen, erhalten Sie Ihre Antwort.

Hoffe, dass hilft.

+0

Guter Rat und gut detailliert - nur so bekommt diese Frage eine Antwort. +1 – CodingIntrigue

+0

Danke. Fröhliches Hacken! Lassen Sie es mich wissen, wenn Sie herausfinden, was es war. Ich bin ziemlich neugierig. – Grinn

0

Seine Lösung hat mir geholfen, das Paket anders als das Verzeichnis umzubenennen. Ich gruppierte meins wie folgt:

Es scheint einen Fehler zu geben, wenn es so mit jquery UI-Stilen geht. Ich habe gerade das Bündel umbenannt in:

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

und das hat es für mich behoben. So scheinen die Skripte auf diese Weise nicht betroffen zu sein, und ähnliche Bündel, ich habe etwa 20 Sätze von Bündeln geladen, und dies ist der einzige, der Probleme verursacht.

0

Mein Problem: I Script-Dateien in meinem Content-Ordner verweisen, sondern haben ein Bündel Namen ~ scipts.Ich habe mein Bundle in ~ DefaultScripts umbenannt und mein Problem behoben. Ich wollte nicht auf den Ordner "Skripte" verweisen, aber er wurde anstelle meines Inhaltsordners verwendet.

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"))