首页 > 解决方案 > 如何将 NodeJs 应用程序部署到 azure Web 应用程序

问题描述

我被赋予了将 nodejs 应用程序部署到 azure web 应用程序的任务,但是我无法让它工作。

我按照此链接中的说明进行操作,一切似乎都非常简单。

唯一的区别是我的 package.json 启动脚本如下所示。

"scripts": {
   "start": "node ./node_modules/@samplescope/samplefolder/sample_service.js"
  },

在说明链接的示例源代码中,它有一个指向 server.js 的 web.config,所以我将该部分修改为我的启动文件的位置,即“./node_modules/@samplescope/samplefolder/sample_service. js"

由此

    <rule name="DynamicContent">
         <match url="/*" />
         <action type="Rewrite" url="server.js"/>
    </rule>

像这样

    <rule name="DynamicContent">
         <match url="/*" />
         <action type="Rewrite" url="./node_modules/@samplescope/samplefolder/sample_service.js"/>
    </rule>

我还尝试删除我创建的 web.config,因为根据此链接, kudu 将尝试根据您的 package.json 为您生成一个,但仍然无法正常工作。

我知道我做错了什么,有人可以指出我正确的方向。

此外,如何在 azure Web 应用程序中调用“npm install”?

是的,它在被“npm start”调用时在本地工作

标签: node.jsazureazure-devopsweb-configazure-web-app-service

解决方案


我能够解决这个问题,现在能够成功地将我的 nodejs 应用程序部署到 azure web 应用程序。

一些关键点帮助我解决了这个问题,因为 Iam 知道 kudu 部署,所以我不太熟悉它。

  1. 您可以通过 https://{site}.scm.azurewebsites.net/ > 工具选项卡 > 诊断转储获取 kudu 日志文件

  2. 在下面网站的“总体流程”部分下,您将看到 kudu 流程的工作原理。这个链接也帮助我了解了 kudu 过程。 https://blog.lifeishao.com/2017/03/24/custom-nodejs-deployment-on-azure-web-app/

  3. 在同步应用程序、清理文件并将文件复制到目标文件夹后,kudu 将尝试生成 web.config。在我们的例子中,.js 位于私有节点模块之一中,因此它需要在 kudu 生成 web.config 之前存在。

  4. 还建议您创建自己的 deploy.cmd,以便您能够控制部署步骤。您也可以参考此链接了解更多信息。 https://github.com/projectkudu/kudu/wiki/Custom-Deployment-Script#custom-deployment-script-generator

  5. 如果您要部署带有私有模块的应用程序,您可以参考此链接获取指南。 https://www.jeff.wilcox.name/2017/02/azure-private-npm/ 此外,在执行 npm install 时明确指出注册表,即使您的本地文件夹中已经有 .npmrc 也是如此。

  6. 最后,如果您在 Azure Devops 中使用 Azure Service App 部署进行部署,请不要让它为您生成 web.config,而是让 kudu 生成它。


推荐阅读