【问题标题】:Specify which Javascript engineReactJS .NET uses指定 ReactJS .NET 使用的 Javascript 引擎
【发布时间】:2016-08-29 16:50:33
【问题描述】:

所以,我知道可以为服务器端渲染指定一个特定的 JavaScript 引擎。我似乎无法找到任何关于它的信息。以下是他们的一个 Github 问题的简介,证实这是可能的:

您是否尝试过使用 V8 引擎来运行它? MS 可能很脆弱(我们有类似的问题,但在我们的开发周期的早期阶段)。它适用于其他 3 个环境的事实意味着这些环境与第 4 个环境之间必须存在差异。例如,它可能在生产服务器上有不同版本的 IE 吗?很难找到,因此切换到 V8 可能是一个更快的选择。

https://github.com/reactjs/React.NET/issues/188

有人知道怎么做吗?我看到不同机器之间的不一致,我认为(比如,90%)原因是使用了不同的 JS 引擎。我想锁定它,所以只有 v8 被使用,所以事情是一致的。

【问题讨论】:

    标签: reactjs reactjs.net


    【解决方案1】:

    您需要在您的 ReactJS.NET 配置上调用 .SetAllowMsieEngine(false)。对于 ASP.NET 4,默认情况下位于 App_Start\ReactConfig.cs 中。对于 ASP.NET Core,它在 Startup.cs 中的 UseReact 调用中。

    这将强制它使用 V8,或者如果它无法加载 V8(而不是回退到 MSIE)则抛出异常。最常见的问题是bin 中缺少ClearScript.V8 目录。对于 ASP.NET 4 站点,这应该会自动复制,但对于 ASP.NET Core,您需要手动修改构建来执行此操作(请参阅 http://reactjs.net/2016/08/protected-memory-exceptions-and-dotnet-core.html

    【讨论】:

    • 所以,我的项目添加了 ClearScript.dll,但没有添加 ClearScript.V8.dll。当您说 ClearScript.V8 目录时……您是指 dll 吗?或者我是否真的需要在 bin 文件夹中创建一个名为 ClearScript.V8 的目录。如果是这种情况,我需要哪个 ClearScript dll?感谢您的帮助,抱歉 20 个问题:P
    • @NickPendleton 您使用的是 ASP.NET 4 还是 ASP.NET Core?对于 ASP.NET 4,安装 JavaScriptEngineSwitcher.V8 NuGet 包应正确配置所有内容(安装 ReactJS.NET 也应自动安装此包)。对于 ASP.NET Core,您需要按照我链接到的博客文章中的步骤进行操作。 ClearScript.V8 目录中实际上有四个文件:ClearScriptV8-64.dll、v8-x64.dll 和 32 位版本。
    • ASP.NET 4。我确实在项目中添加了 JavaScriptEngineSwitcher.V8。我认为由于我的项目结构的奇怪,它没有得到正确配置。如果我手动复制 dll,ReactEnvironment 会突然停止解析。现在处理内部异常。
    猜你喜欢
    • 1970-01-01
    • 2013-12-07
    • 2010-11-19
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多