Я пытаюсь настроить рендеринг на стороне сервера с использованием ReactJS.Net в проекте EPiServer.Для этого я использую предоставленное расширение ReactJS.Net Html для рендеринга, однако, когда я запускаю свой сайт
, я получаю сообщение об ошибке : «ReactJS.NET не была правильно инициализирована. Убедитесь, что вы вызвали services.AddReact () и app.UseReact () в файле Startup.cs. "
Если я переключаюсь с попытки использовать расширение рендеринга сервера на попытку рендеринга в обычном режиме с React
Я получаю другую ошибку : "TinyIoCResolutionException: Невозможно разрешить тип: React.Web.BabelHandler ".
Я думаю, что основная проблема заключается в том, что существует некоторая разница в том, как проект EPiServer инициализирует вещи при запуске, против ванильного проекта .Net MVC, но я не уверен, в чем разница или какобойти это.
Я работаю с пакетом nuget React.Web.Mvc4 v4.0.0, Episerver 11 и .Net Framework 4.6.2.Я взял тот же компонент, который пытался отрисовать, и вставил его в ванильный проект .Net MVC без EPiServer, и он правильно отображает на стороне клиента и на стороне сервера, используя расширение, поэтому компонент не является проблемой.Я обнаружил что-то, говорящее о том, что эта ошибка обычно появляется, когда React или ReactDOM не доступны для глобальной области видимости, поэтому я настроил ее, чтобы гарантировать, что мой реагирующий компонент добавляется в глобальную область действия, но там тоже не повезло.
Вот мой ReactConfig:
public static void Configure()
{
JsEngineSwitcher.Current.DefaultEngineName = V8JsEngine.EngineName;
JsEngineSwitcher.Current.EngineFactories.AddV8();
ReactSiteConfiguration.Configuration
.AddScript("~/Static/js/Components/PrimaryCallout.jsx");
}
Вот мой компонент:
class PrimaryCallout extends React.Component {
constructor(props) {
super(props);
this.state = {
header: this.props.header,
buttonText: this.props.buttonText,
buttonLink: this.props.buttonLink
};
}
render() {
return (
<div className="primary-callout-container">
<h2 className="primary-callout-header">{this.state.header}</h2>
<a href={this.state.buttonLink} className="primary-callout-link">
<button className="primary-callout-button">{this.state.buttonText}</button>
</a>
</div>
);
}
}
Вот как я пытаюсь отобразить свой компонент:
@Html.React("PrimaryCallout", new
{
header = Model.Header,
buttonText = Model.CalloutLinkText,
buttonLink = Url.ContentUrl(Model.CalloutLink)
})
Любая помощь или понимание приветствуется.
Спасибо.