首先,很多这项技术对我来说都是新的,所以我为noob问题道歉。此外,这是我的第一篇文章(经过多年的阅读),请原谅格式化。
我有一个我通过MSVS 2017运行的Web应用程序。我正在用React.js编写我的前端。在通过nuget安装适当的软件包之后,当我在本地开发机器上运行调试版和发布版时(使用iisexpress),我可以使用一些东西。
但是,在我提交源更改并将其推送到测试服务器(IIS)后,应用程序运行正常。但是,不会转换从测试服务器返回的JSX文件。我只是得到原始的JSX文件。然而,在我的本地机器上,会转换返回的文件。
我有一个带有单个静态Configure方法的ReactConfig.cs文件,我在那里调用通过ReactSiteConfiguration.Configuration.AddScript添加我的JSX文件,但这似乎是不必要的,因为我仍然得到一个转换结果,即使它被注释掉了。在我的ReactConfig.cs文件的顶部,我有类似于:
[assembly: webActivatorEx.PreApplicationStartMethod(typeof(MyApp.Api.Controllers.MyController), "AutoMapperStart")]
那么,我的问题是如何在我的开发机器上发生转换,而不是部署机器。
在我的web.config文件中,我尝试了两种方法:
<httpHandlers>
<add verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" />
</httpHandlers>
和
<remove name="Babel" /><add name="Babel" verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" preCondition="integratedMode" /></handlers>
但似乎两者似乎都没有对已部署的服务器产生影响。
如果有人对我接下来要看的内容有任何建议,我们将不胜感激。
更新: 我注意到允许我的开发环境进行转换的相关项是我的web.config文件中的第二个代码部分。但是,我在服务器上看不到相同的行。是否通常手动编辑web.config文件&#39;或许每个部署?
答案 0 :(得分:0)
所以,这是我最终想到的对我有用的东西。
首先,是的,web.config文件作为模板部署。然后根据需要手动配置。
其次,更重要的是,让服务器将JSX呈现给纯JS有两个部分。
<system.webServer> <handlers> <remove name="Babel" /> <add name="Babel" verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" preCondition="integratedMode"/> </handlers> </system.webServer>
<dependentAssembly> <assemblyIdentity name="JavaScriptEngineSwitcher.Core" publicKeyToken="c608b2a8cc9e4472" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.4.9.0" newVersion="2.4.9.0" /> </dependentAssembly>