gpt4 book ai didi

asp.net - 发布到 azure、asp.net core React 应用程序

转载 作者:行者123 更新时间:2023-12-02 06:21:06 25 4
gpt4 key购买 nike

我用谷歌搜索了很多,但我还没弄清楚该怎么做。我有一个网络应用程序,想部署在 azure 上。我生成了链接,但使用我的 React 组件的路由返回 500 状态代码。

对于我的组件,我使用 JSX,并将它们放在/js 下的 wwwroot 文件夹中(我没有使用 ES16)。

我需要一些东西来捆绑它并将 jsx 处理成 js 对吗?我不明白为什么它在本地主机上工作。

在 Startup.cs 的配置方法中,我添加了如下脚本:

app.UseReact(config =>
{

config
.AddScript("~/js/test.jsx")
.AddScript("~/js/users.jsx")
.AddScript("~/js/userCards.jsx")
.AddScript("~/js/userInfo.jsx")
.AddScript("~/js/cards.jsx")
.AddScript("~/js/user.jsx")
.AddScript("~/js/addCard.jsx")
.AddScript("~/js/cardImages.jsx")

.SetJsonSerializerSettings(new JsonSerializerSettings
{
StringEscapeHandling = StringEscapeHandling.EscapeHtml,
ContractResolver = new CamelCasePropertyNamesContractResolver()
});

});

如果这是一个愚蠢的问题,我很抱歉,但我似乎找不到 ASP.NET Core 的良好解释。

[编辑]我正在使用 VS2017、asp.net core 1.0.4 和 React.AspNet 3.0.1

错误日志:

ReactEngineNotFoundException: No usable JavaScript engine was found. Please 
install a JavaScript engine such as React.JavaScriptEngine.ClearScriptV8 (on
Windows) or React.JavaScriptEngine.VroomJs (on Linux and Mac OS X). Refer
to the ReactJS.NET documentation for more details.
React.AspNet.HtmlHelperExtensions.get_Environment()

TinyIoCResolutionException: Unable to resolve type:
React.JavaScriptEngineFactory
React.AspNet.HtmlHelperExtensions.get_Environment()

TinyIoCResolutionException: Unable to resolve type: React.ReactEnvironment
React.AspNet.HtmlHelperExtensions.get_Environment()

ReactNotInitialisedException: ReactJS.NET has not been initialised
correctly. Please ensure you have called app.AddReact() and
app.UseReact() in your Startup.cs file.
React.AspNet.HtmlHelperExtensions.get_Environment()

它说我没有 app.AddReact 也没有 app.UseReact,但我都有......

 public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddReact();

services.AddServerSentEvents();
services.AddServerSentEvents<INotificationsServerSentEventsService, NotificationsServerSentEventsService>();

services.AddMvc();

services.AddSingleton<HttpClient>();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IServiceProvider serviceProvider)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}


app.MapServerSentEvents("/see-heartbeat");
app.MapServerSentEvents("/sse-notifications", serviceProvider.GetService<NotificationsServerSentEventsService>());

app.UseStatusCodePagesWithReExecute("/Error/{0}");

app.UseReact(config =>
{

config
.AddScript("~/js/test.jsx")
.AddScript("~/js/users.jsx")
.AddScript("~/js/userCards.jsx")
.AddScript("~/js/userInfo.jsx")
.AddScript("~/js/cards.jsx")
.AddScript("~/js/user.jsx")
.AddScript("~/js/addCard.jsx")
.AddScript("~/js/cardImages.jsx")

.SetJsonSerializerSettings(new JsonSerializerSettings
{
StringEscapeHandling = StringEscapeHandling.EscapeHtml,
ContractResolver = new CamelCasePropertyNamesContractResolver()
});

});

app.UseDefaultFiles();
app.UseStaticFiles();


app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Index}/{action=Index}/{id?}");
});


}

最佳答案

这是因为 JavaScript 引擎位于您的 PC 上,而不是位于 Azure 中。摘自:https://github.com/reactjs/React.NET/issues/400 (实际上是关于如何让 React 工作的完整说明)

结合使用这些指南,我能够在将应用程序发布到 Azure 时正常运行:

http://www.samulihaverinen.com/web-development/dotnet/2016/01/19/how-to-run-clearscript-v8-javascript-engine-in-azure/

https://github.com/Taritsyn/JavaScriptEngineSwitcher/wiki/Registration-of-JS-engines

从第一个指南开始,我单独安装了依赖项:

Uninstall-Package React.AspNet
Install-Package JavaScriptEngineSwitcher.Core
Install-Package JavaScriptEngineSwitcher.Msie (May not be needed)
Install-Package JSPool
Install-Package JavaScriptEngineSwitcher.ChakraCore
Install-Package JavaScriptEngineSwitcher.ChakraCore.Native.win-x64 (Selected native implementation)
Install-Package Microsoft.ChakraCore (I think this is key to enabling ChakraCore on the server)
Install-Package React.AspNet -IgnoreDependencies

在第二个指南中,我安装了一个包以在 .NET Core 1.X 中启用 JavaScriptEngineSwitcher 配置:

Install-Package JavaScriptEngineSwitcher.Extensions.MsDependencyInjection

在 Startup.cs 中

ConfigureServices():
services.AddJsEngineSwitcher(options => options.DefaultEngineName = ChakraCoreJsEngine.EngineName).AddChakraCore();

关于asp.net - 发布到 azure、asp.net core React 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44158745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com