INodeServices不在Azure上工作,但在Localhost上工作 [英] INodeServices not working on Azure, but working on Localhost

查看:57
本文介绍了INodeServices不在Azure上工作,但在Localhost上工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用asp.net core 2.2和INodeServices来实现C#和Node之间的互操作性。问题是我的Node调用在我的开发环境中工作得很好,但是一旦我将代码推送到Azure App Service然后执行调用(通过
一个MVC控制器),它似乎无法找到要执行的Node代码等了一会儿之后,就抛出了一个错误。



我用Kudu创建了我的node_modules文件夹以及我的Node文件夹没有被复制到发布部署目录,除非我通过设置 来配置它们。我的.csproj文件中的以下代码。
$


```< ItemGroup>

  &NBSP; < Content Include =" NodeCode \ ePaycoCash.js">

  &NBSP; &NBSP; < CopyToOutputDirectory>始终< / CopyToOutputDirectory>

  &NBSP; < / Content>

  &NBSP; < Content Include =" NodeCode \ ePaycoCustomers.js">

  &NBSP; &NBSP; < CopyToOutputDirectory>始终< / CopyToOutputDirectory>

  &NBSP; < / Content>

  &NBSP; < Content Include =" NodeCode \ ePaycoPayments.js">

  &NBSP; &NBSP; < CopyToOutputDirectory>始终< / CopyToOutputDirectory>

  &NBSP; < / Content>

  &NBSP; < Content Include =" NodeCode \ ePaycoPlans.js">

  &NBSP; &NBSP; < CopyToOutputDirectory>始终< / CopyToOutputDirectory>

  &NBSP; < / Content>

  &NBSP; < Content Include =" NodeCode \ ePaycoPSE.js">

  &NBSP; &NBSP; < CopyToOutputDirectory>始终< / CopyToOutputDirectory>

  &NBSP; < / Content>

  &NBSP; < Content Include =" NodeCode \ ePaycoSubscriptions.js">

  &NBSP; &NBSP; < CopyToOutputDirectory>始终< / CopyToOutputDirectory>

  &NBSP; < / Content>

  &NBSP; < Content Include =" NodeCode \ ePaycoTokens.js">

  &NBSP; &NBSP; < CopyToOutputDirectory>始终< / CopyToOutputDirectory>

  &NBSP; < / Content> 

  &NBSP; < Content Include =" node_modules\ **">

  &NBSP; &NBSP; < CopyToOutputDirectory> PreserveNewest< / CopyToOutputDirectory>

  &NBSP; < / Content>

  < / ItemGroup>```
 这似乎没有解决问题,但事实上我的NodeCode文件夹应该部署在我的node_nodules旁边因为依赖。 



感谢您的时间。



截至目前,INodeServices调用在我的开发环境中运行良好,但一旦部署到Azure,它会在漫长的等待后失败。
$

I'm using asp.net core 2.2 and INodeServices for interoperability between C# and Node. The problem is that my Node invocation works great on my development environment, but once I push my code to Azure App Service and then execute the invocation (trough an MVC controller), it seems unable to locate the Node code to execute and after waiting a bit, it throws an error.

I've founded by using Kudu that my node_modules Folder as well as my Node folder dont get copied to the publish directory on deployment unless I configure them to do so by setting  the following code on my .csproj file.

``` <ItemGroup>
    <Content Include="NodeCode\ePaycoCash.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCode\ePaycoCustomers.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCode\ePaycoPayments.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCode\ePaycoPlans.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCode\ePaycoPSE.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCode\ePaycoSubscriptions.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCode\ePaycoTokens.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content> 
    <Content Include="node_modules\**">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>```
 this doesn't seem to solve the problem, but its a fact that my NodeCode Folder should be deployed next to my node_nodules because of dependencies. 

Thanks for your time.

As of right now, the INodeServices invocation works great on my development environment, but once deployed to Azure, it fails after a long wait.

推荐答案

长期的常见原因应用程序启动时间是node_modules中的大量文件。应用程序
在启动时尝试加载大多数这些文件。默认情况下,由于您的文件存储在Azure App Service上的网络共享上,因此加载许多文件可能需要一些时间。您可以尝试下面列出的一些解决方案,以便更快地完成此过程并查看
如何:


  1. 通过使用npm3安装模块,确保您具有平坦的依赖关系结构并且没有重复的依赖关系。
  2. 尝试延迟加载node_modules而不是在应用程序中加载所有模块开始。对于Lazy加载模块,当在第一次执行模块代码之前在函数中实际需要
    时,应该调用require('module')。
  3. < span style ="font-size:10.0pt; font-family:'Verdana',sans-serif; color:black"> Azure App Service提供了一种称为本地缓存的功能。此功能将您的内容从网络共享复制到VM上的本地磁盘。由于这些文件是本地文件,因此node_modules的加载
    时间要快得多。

请检查  d:\\home \\LogFiles \\Application\\logging-errors.txt   file
,用于显示任何抛出异常的详细信息。此文件具有堆栈跟踪,以帮助诊断和修复您的应用程序。请告诉我们如何进一步调查。


这篇关于INodeServices不在Azure上工作,但在Localhost上工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆