2016-04-26 83 views
2

我剛剛發佈了一個在開發中工作正常的應用程序,但是當我將其上載到服務器時,它嘗試預渲染特定視圖時失敗。發佈後ReactJs.net服務器端呈現失敗

簡單的MVC函數返回一個觀點:

public ActionResult StandaloneReport(ReportPageData pageData) 
{ 
    return View(pageData); 
} 

簡單的服務器側渲染:

@Html.React("Components.ReportDisplayContainer", new {.pageData = Model}) 
@Html.ReactInitJavaScript() 

React.net被設定爲所使用的預包裝的js束:

ReactSiteConfiguration.Configuration.SetLoadBabel(false) 
    .AddScriptWithoutTransform("~/Scripts/webpack/build/server.bundle.js"); 

ReactSiteConfiguration.Configuration.SetReuseJavaScriptEngines(false); 

這一切在開發中都可以正常工作,並且在發佈之前我已經重新發布並刪除了服務器上的所有文件,所以我做了不知道爲什麼它沒有在服務器上的工作..

我得到的錯誤是:

錯誤而渲染「Components.ReportDisplayContainer」到 「react_phCzHNkR5Uq7r5UEzzqYrQ」:腳本引發了異常:對象 不「來自」線支撐屬性或方法:0柱:0

Line 61: @Html.React("Components.ReportDisplayContainer", New With {.pageData = Model})

其中我只能看到涉及此線O f代碼由webpack生成:

return Array.from(arr); 

那麼,爲什麼反應助手樂於在本地執行它,而不是在服務器上執行?

回答

1

不知道這是否正是您遇到的情況,但經過長時間的無果實驗後,我遇到了問題的解決方案,因此希望它可以幫助您或網絡上的某個人。

我的項目有10個jsx文件:

bundles.Add(new System.Web.Optimization.React.BabelBundle("~/bundles/CustomJsxFiles").Include(
    "~/Content/ReactJSXFiles/ReactApp.jsx", 
    "~/Content/ReactJSXFiles/CalendarControl.jsx", 
    "~/Content/ReactJSXFiles/BootstrapNavbar.jsx", 
    "~/Content/ReactJSXFiles/SectionList.jsx", 
    "~/Content/ReactJSXFiles/FutureDPsList.jsx", 
    "~/Content/ReactJSXFiles/PastDPsList.jsx", 
    "~/Content/ReactJSXFiles/TimeRecs.jsx", 
    "~/Content/ReactJSXFiles/ClickableHeader.jsx", 
    "~/Content/ReactJSXFiles/CodeEntryModal.jsx", 
    "~/Content/ReactJSXFiles/Dp28DayRow.jsx" 
)); 

並在本地進行調試時,它工作正常,但是當我發佈到IIS,我只看到3個文件:

ClickableHeader.jsx 
ReactApp.jsx 
TimeRecs.jsx 

僅供參考,我使用

BundleTable.EnableOptimizations = false;

用於調試PU rposes。當它設置爲true時,它只創建一個文件,但即使在這種情況下,您仍然可以看到該文件比本地創建的文件小得多。

不管怎樣,在討論在 http://reactjs.net/guides/weboptimizer.html 底部,我注意到這條線:

我們只是有同樣的問題,我跟着上面的指示。製作 確保JSX在屬性中標記爲「內容」。

我期待在Visual Studio和jsx文件中缺少的被標記沒有這樣的:

enter image description here

而那名存在顯着像這樣的:

enter image description here

將它們全部標爲Content後,我可以成功推送到服務器。

+0

這解決了我的問題。謝謝你的提示! – Jecoms