Javascript 将nodejs应用程序部署到Azure的最佳实践

Javascript 将nodejs应用程序部署到Azure的最佳实践,javascript,node.js,azure,deployment,azure-functions,Javascript,Node.js,Azure,Deployment,Azure Functions,最近,我开始从事Nodejs项目,我们正在为此使用Azure函数。我对Azure的应用程序部署很感兴趣 首先,我试图找到一个无服务器插件,在部署过程中安装依赖项包。找不到一个简单的方法来做到这一点 经过一些谷歌搜索和阅读,我发现最佳实践是在构建步骤上安装软件包,并部署已经生成的node_模块 将node_modules目录作为应用程序的一部分进行部署会增加部署的大小。。。但是,它确实保证了生产中使用的模块版本与开发中使用的模块版本相同 因此,我尝试遵循这一点,部署具有依赖关系的小型应用程序: "

最近,我开始从事Nodejs项目,我们正在为此使用Azure函数。我对Azure的应用程序部署很感兴趣

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

经过一些谷歌搜索和阅读,我发现最佳实践是在构建步骤上安装软件包,并部署已经生成的node_模块

将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文件约为709KB。它部署成功。但当我再添加一个包时(猫鼬)

zip大小变为2.83MB,部署挂起消息“Upload function:…”,函数未部署,并且没有日志

它挂着。。。我不确定确切的原因是什么,但即使只有很少的包,它也不起作用,如果我添加更多的大包呢


我诚恳地询问您如何解决此类问题,以及哪种方法最适合您构建和部署NodeJSAzure功能。谢谢大家!

解决方案是使用webpack将许多包捆绑到一个文件中。这样,部署起来就简单快捷了。如果您使用的是
serverless
framework,则会有一个包来完成此工作。

您尝试过funcpack()吗?它可能是你正在寻找的插件!你有没有在你的zip中包含node_模块?没有,包含node_模块就是不起作用,如果我只有几个包,它就挂起来了。因此,我们使用webpack将所有文件捆绑到一个文件中,并以这种方式工作(如我在回答中所述。不确定今天是否有更好的方法当您说“使用webpack将所有文件捆绑到一个文件中”时,您的意思是捆绑第三方依赖项(节点打包)对于另一种方法,我遇到过,它解释了如何在部署时在应用程序上安装包。不过,我还没有尝试。你可以试试。到目前为止,我发现使用与WebPACK捆绑的单个文件是最方便的方法。你必须考虑包的版本、本机模块、部署时间等。(这要简单得多。不过你可以尝试其他选择,这是获得经验的一种方式)
"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"
}