2017-10-24 5 views
0

IISと私の開発サーバ上SignalRを使用して自分のアプリケーションを実行しているとき(それはデバッグにアプリケーションをローカルで実行している完全に罰金ですが)私はJSコンソールで下のエラーが出るようだ:バンドル最適化を使用してASP.NET MVCアプリケーションをIISに公開したとき、SignalRが正しくロードされないのはなぜですか?

Uncaught Error: SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/js. 
at hubs:17 
at hubs:106 

17行目は、

if (typeof ($.signalR) !== "function") { 
    throw new Error("SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/js."); 
} 

に関連しています。行106は、IIFEの終わりにすぎません。ここで

はBundleConfigクラスを下回っている:

public class BundleConfig 
{ 
    public static void RegisterBundles(BundleCollection bundles) 
    { 
     var scriptBundle = new ScriptBundle("~/Scripts/bundle"); 

     // jQuery 
     scriptBundle.Include("~/Scripts/jquery-3.1.1.min.js"); 

     // Bootstrap 
     scriptBundle.Include("~/Scripts/bootstrap.min.js"); 

     // Knockout 
     scriptBundle.Include("~/Scripts/knockout-{version}.js"); 

     // SignalR 
     scriptBundle.Include("~/Scripts/jquery.signalR-{version}.js"); 

     // Custom site scripts 
     scriptBundle.Include("~/Scripts/scripts.js"); 
     scriptBundle.Include("~/Scripts/scripts-bootstrap.js"); 
     scriptBundle.Include("~/Scripts/scripts-devextreme.js"); 


     var styleBundle = new StyleBundle("~/Content/bundle"); 

     // Bootstrap 
     styleBundle.Include("~/Content/bootstrap-telus-theme.min.css"); 

     // Font Awesome 
     styleBundle.Include("~/Content/font-awesome.min.css"); 

     // Custom site styles 
     styleBundle.Include("~/Content/Site.css"); 
     styleBundle.Include("~/Content/Site-bootstrap-plus.css"); 
     styleBundle.Include("~/Content/Site-devextreme-plus.css"); 


     bundles.Add(scriptBundle); 
     bundles.Add(styleBundle); 

     #if !DEBUG 
     BundleTable.EnableOptimizations = true; 
     #endif 
    } 
} 

開発サーバ上のDOCTYPEは次のようになります。ローカルデバッグで

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 

    <title>Login</title> 
    <link rel="favicon" href="/Content/favicons/favicon.ico" /> 
    <link rel="favicon" sizes="32x32" href="/Content/favicons/favicon-32.png" /> 
    <link rel="favicon" sizes="128x128" href="/Content/favicons/favicon-128.png" /> 
    <link rel="apple-touch-icon" href="/Content/favicons/apple-touch-icon.png" /> 
    <link rel="apple-touch-icon" sizes="72x72" href="/Content/favicons/apple-touch-icon-72.png" /> 
    <link rel="apple-touch-icon" sizes="114x114" href="/Content/favicons/apple-touch-icon-114.png" /> 
    <link rel="apple-touch-icon" sizes="144x144" href="/Content/favicons/apple-touch-icon-144.png" /> 

    <link href="/Content/bundle?v=KoFrSDNrdsCobjey_0WoDyRHewQDRrB1Ov9eEHg15EI1" rel="stylesheet"/> 

    <link href="/Content/DevExtremeBundle?v=dvjWkuzRNPhpuO8epzd1bapDA4VbH3NGrM9XfK6lfH41" rel="stylesheet"/> 

    <script src="/Scripts/bundle?v=bk8qAjn5FOZNS6DjmQ8qRN1l5sZzYFEHYS7tNOnf4vk1"></script> 

    <script src="/Scripts/DevExtremeBundle?v=EDbcZoJEzBcOEMDXw50S76TV4vRJy8nCjafsccwoAas1"></script> 

    <script src="/signalr/hubs" type="text/javascript"></script> 
</head> 

(そのバンドルの最適化なし):

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 

    <title>Login</title> 
    <link rel="favicon" href="/Content/favicons/favicon.ico" /> 
    <link rel="favicon" sizes="32x32" href="/Content/favicons/favicon-32.png" /> 
    <link rel="favicon" sizes="128x128" href="/Content/favicons/favicon-128.png" /> 
    <link rel="apple-touch-icon" href="/Content/favicons/apple-touch-icon.png" /> 
    <link rel="apple-touch-icon" sizes="72x72" href="/Content/favicons/apple-touch-icon-72.png" /> 
    <link rel="apple-touch-icon" sizes="114x114" href="/Content/favicons/apple-touch-icon-114.png" /> 
    <link rel="apple-touch-icon" sizes="144x144" href="/Content/favicons/apple-touch-icon-144.png" /> 

    <link href="/Content/bootstrap-telus-theme.min.css" rel="stylesheet"/> 
<link href="/Content/font-awesome.min.css" rel="stylesheet"/> 
<link href="/Content/Site.css" rel="stylesheet"/> 
<link href="/Content/Site-bootstrap-plus.css" rel="stylesheet"/> 
<link href="/Content/Site-devextreme-plus.css" rel="stylesheet"/> 

    <link href="/Content/dx.common.css" rel="stylesheet"/> 
<link href="/Content/dx.telus.light.css" rel="stylesheet"/> 

    <script src="/Scripts/jquery-3.1.1.min.js"></script> 
<script src="/Scripts/bootstrap.min.js"></script> 
<script src="/Scripts/knockout-3.4.2.debug.js"></script> 
<script src="/Scripts/jquery.signalR-2.2.2.js"></script> 
<script src="/Scripts/scripts.js"></script> 
<script src="/Scripts/scripts-bootstrap.js"></script> 
<script src="/Scripts/scripts-devextreme.js"></script> 

    <script src="/Scripts/cldr.js"></script> 
<script src="/Scripts/cldr/event.js"></script> 
<script src="/Scripts/cldr/supplemental.js"></script> 
<script src="/Scripts/cldr/unresolved.js"></script> 
<script src="/Scripts/globalize.js"></script> 
<script src="/Scripts/globalize/message.js"></script> 
<script src="/Scripts/globalize/number.js"></script> 
<script src="/Scripts/globalize/currency.js"></script> 
<script src="/Scripts/globalize/date.js"></script> 
<script src="/Scripts/jszip.js"></script> 
<script src="/Scripts/dx.all.debug.js"></script> 
<script src="/Scripts/aspnet/dx.aspnet.data.js"></script> 
<script src="/Scripts/aspnet/dx.aspnet.mvc.js"></script> 

    <script src="/signalr/hubs" type="text/javascript"></script> 
</head> 

開発サーバーに公開されているものがDEBUG定数で実行されない場合、どのように作成できますかそれはそれなしで働く? ImhoのBundleTable.EnableOptimizations = true;行は私のsignalRバンドルを混乱させることは想定されていませんが、まだそれは2つの間で見ることができる唯一の違いです。ただし、開発サーバーの設定をローカルで実行している場合、最適化バンドルを有効にしても機能します。

答えて

1

バンドル最適化が最小ファイルをスキップしているため、問題が発生しました。バンドルしたJSにはSignalRに必要なjQueryがありません。詳細については

、この答えを確認してください。Bundler not including .min files

+0

あなたがいることを意味し、それはscriptBundle.Includeのような縮小さのバージョン(「〜/スクリプト/ jqueryの-3.1.1.min.js」)を考慮していないからです。 jqueryは省略されています。 – Ehouarn

+0

はい、正しい –

関連する問題