我试图建立服务器端在EPiServer项目中使用ReactJS.Net渲染。为了做到这一点,我使用提供ReactJS.Net的Html extention做我的渲染,但是,当我跑我的网站
我得到一个错误说:“ReactJS.NET尚未正确初始化请确定您已经称为services.AddReact()和app.UseReact()在你的Startup.cs文件。”
如果我试图使用服务器渲染扩展试图来与正常渲染交换
我得到一个不同的错误:“TinyIoCResolutionException:无法解析类型:React.Web.BabelHandler”。
我认为,根本的问题是,有在EPiServer项目是如何在初始化启动VS香草净MVC项目的事情有些区别,但我不确定什么区别是什么或如何解决它。
我与React.Web.Mvc4 V4.0.0 NuGet包,Episerver 11,和.NET Framework 4.6.2工作。我把我想呈现相同的组件,并粘贴成不EPiServer香草净MVC项目,它可以正确显示,客户端和使用扩展服务器端,所以该组件是不是问题。我发现一些说,这个错误通常出现反应过来的时候还是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)
})
任何和所有帮助或洞察力的赞赏。
谢谢。
经过大量挖周围的我确定我是有通天确实问题不发生反应。该阵营未初始化错误扼杀了真正的问题。我没有它缩小到什么在我的巴别塔的设置是错误的,但我重新做了我的捆绑和缩小的设置,现在我回来了启动和运行。
采取此为别人的教训是,如果你看到这个“ReactJS.NET尚未正确初始化。请确保您有人称services.AddReact()和app.UseReact()在你的Startup.cs文件。”错误,那么看的更深一些,因为它可能扼杀错误消息的真正问题。