NodeJS 作为服务结构上的来宾可执行文件

Posted

技术标签:

【中文标题】NodeJS 作为服务结构上的来宾可执行文件【英文标题】:NodeJS as Guest executable on service fabric 【发布时间】:2018-04-15 20:57:36 【问题描述】:

我必须将 nodejs 应用程序部署为服务结构上的来宾可执行文件,我在本地将其托管在 SF 上,但是当我尝试将代码推送到源代码控制时,我必须将 node_modules 文件夹连同它一起推送,但 Visual Studio 没有'不允许你这样做,因为 node_modules 中的路径太长,有没有一种方法可以在没有 node_modules 的情况下进行部署,我尝试了像 nexe 这样的 npm 包,但似乎没有一个工作

【问题讨论】:

您是否考虑过在容器内运行节点? github.com/Azure-Samples/service-fabric-dotnet-containers @LoekD 目前在我们的案例中这是不可能的 移动到 C:\ 也许? @Mardoxx 这行得通,但我在源代码控制环境中,我无法将其保留在 C:\ 【参考方案1】:

因此,经过大量研究和点击/试用,我们所做的是压缩 node_modules 文件夹并配置来宾可执行文件以在启动服务之前解压缩部署时的文件夹。解压缩是通过在服务启动之前调用批处理文件来完成的,这是来自来宾可执行文件的服务清单的代码 sn-p,它在启动服务之前运行批处理文件:

<SetupEntryPoint>
  <ExeHost>
    <Program>MySetup.bat</Program>
    <WorkingFolder>CodePackage</WorkingFolder>
    <ConsoleRedirection FileRetentionCount="10"/>
  </ExeHost>
</SetupEntryPoint> 

另一种解决方案是同时执行 npm install,但我们不想走那条路。

【讨论】:

以上是关于NodeJS 作为服务结构上的来宾可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

管理来宾可执行文件依赖项 - 本地 Service Fabric

在 Service Fabric 的来宾可执行文件中使用动态分配的端口

Service Fabric 命名服务未转发到分配给来宾可执行文件的端点

Service Fabric 来宾可执行文件托管和优雅停止

如何在 Service Fabric 中安装批处理文件

如何在 Azure 服务结构中迁移 Windows 服务