【问题标题】:Best practice for nodejs app deployment to Azure将 nodejs 应用部署到 Azure 的最佳实践
【发布时间】:2018-08-14 19:41:05
【问题描述】:

最近我开始在 Nodejs 项目上工作,为此我们使用 Azure Functions。我对将应用程序部署到 Azure 感到好奇。

首先我尝试在部署过程中找到一个无服务器插件来安装依赖包。找不到简单的方法来做到这一点。

在谷歌搜索和阅读documentation 之后,我发现最佳做法是在构建步骤中安装软件包,并部署已经生成的 node_modules。

将 node_modules 目录部署为应用程序的一部分会增加部署的大小。 ...但是,它确实保证生产中使用的模块版本与开发中使用的模块版本相同。

所以我尝试遵循这一点,并部署带有依赖项的小应用程序:

"dependencies": {
  "azure-function-express": "^1.3.0",
  "body-parser": "^1.18.2",
  "express": "^4.16.2",
  "cookie-parser": "^1.4.3",
  "cors": "^2.8.4"
}

要部署的 Zip 文件大小约为 709 KB。它部署成功。但是当我再添加一个包时(猫鼬)

"dependencies": {
  "azure-function-express": "^1.3.0",
  "body-parser": "^1.18.2",
  "express": "^4.16.2",
  "cookie-parser": "^1.4.3",
  "cors": "^2.8.4",
  "mongoose": "^5.0.11"
}

zip 的大小变为 2.83 mb,部署挂起并显示消息“上传功能:...”,未部署功能,也没有日志。

它挂了...我不确定确切的原因是什么,但是即使使用很少的包也不起作用,如果我添加更多的大包怎么办?

请问您如何解决此类问题,以及哪种方法最适合您构建和部署 Nodejs Azure Functions。谢谢!

【问题讨论】:

标签: javascript node.js azure deployment azure-functions


【解决方案1】:

解决方案是使用 webpack 将很多包打包到一个文件中。然后部署起来既简单又快速。如果您使用serverless 框架,则有一个包serverless-webpack 可以完成这项工作。

【讨论】:

  • 您是否已在 zip 中包含 node_modules?
  • 不,如果我有几个包,包括 node_modules 就不起作用,它挂了。所以我们使用 webpack 将所有文件捆绑到一个中,这样它就可以工作(正如我在回答中描述的那样。不确定今天是否有更好的方法
  • 当您说“使用 webpack 将所有文件打包成一个”时,您的意思是您也捆绑了第三方依赖项(节点包)?
  • 关于我遇到的另一种方法 Using Node.js Modules with Azure applicationsstartup-task-to-run-npm-in-azure.markdown 解释了如何在部署时在应用程序上安装包。不过我还没有尝试过。
  • 好吧,你可以试一试。到目前为止,我发现使用与 webpack 捆绑的单个文件是最方便的方法。您必须考虑包的版本、本机模块、部署时间等。捆绑起来要简单得多。但是您可以尝试其他选择,这是获得经验的一种方式)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多