Отказ сторон сервера 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": Script выбрасывает исключение: Object не поддерживает свойство или метод 'from' Line: 0 Column: 0

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

Я могу видеть только эту строку кода, сгенерированную 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

FYI, я использую

BundleTable.EnableOptimizations = false;

для целей отладки. Когда он установлен в true, он создает только один файл, но даже в этом случае вы все равно можете видеть, что файл намного меньше, чем тот, который был создан локально.

В любом случае, в нижней части дискуссии на http://reactjs.net/guides/weboptimizer.html Я заметил эту строку:

У нас была одна и та же проблема, я следил за приведенными выше инструкциями. Делать убедитесь, что JSX отмечен как "контент" в свойствах.

Я смотрю в Visual Studio, а отсутствующие файлы jsx отмечены как:

введите описание изображения здесь

В то время как те, которые были там, были отмечены следующим образом:

введите описание изображения здесь

После того, как все они обозначены как Content, я могу успешно нажать на сервер.