使用 Visual Studio 将 NodeJS 应用发布到 Azure





5.00/5 (6投票s)
《为 Microsoft Azure 构建电子学习平台》系列的第一部分。
引言
作为拥有“传统”VB 或 C# ASP / .NET 背景的网络开发者,我们非常幸运地获得了微软默认提供的海量基础设施、组件、库和工具,以及由广大 .NET 社区众多慷慨成员提供的开源项目。当然,这并非意味着围绕其他技术发展的社区就不如我们一样庞大和精彩——仅仅是我个人的经验(这是*我的经验*,你可能/将会不同!)。无论如何,尽管在我们开发平台领域拥有丰富的资源,有时我们会发现跨越界限、在不同于我们习惯的环境中使用更适合的解决方案。当我寻找一个可以集成到我参与的一个大型 .NET 项目中的在线学习解决方案时,情况就是如此,我找到了最适合我需求的解决方案,但它是用 NodeJS 开发的,而不是我偏好的 C# .NET 平台。这是我一系列短文的第一篇,它将描述我在 Azure 中集成一个使用 MongoDB 开发的在线培训/在线学习平台到我运行在 Azure 上的 .NET 项目的解决方案背景。
本文将涵盖以下主题
- 将 NodeJS 应用发布到 Azure(本文)
- 在本地安装和测试在线学习平台(即将推出)
- 在 Azure CosmosDB 中复制 MongoDB 数据库(即将推出)
- 将在线学习平台上传并发布到 Azure(即将推出)
背景
云的魅力,尤其是 Azure 的魅力,在于能够在同一个虚拟空间中运行多种不同的技术,并让它们轻松连接,尽管它们具有不同的托管和环境要求。当然,我们需要配置这个东西,设置那个东西,但总的来说,这比以前容易得多!在这个项目之前,我从未需要在 Azure 上部署 NodeJS 解决方案,所以第一步是逐步进行,找出任何“陷阱”。我有两件事需要处理。我的起点是看看需要什么才能将一个简单的“hello world
”风格的 Node 应用发布并运行在 Azure 上。
入门
对于这个简单的例子,我们将假设一个新项目。在 Visual Studio 中,创建一个新项目,然后选择类型 **New NodeJS project for Azure**(新 NodeJS 项目用于 Azure)。
使用 VS 2017,从菜单中选择 **File New Project**(文件新建项目)。
在 JavaScript 部分,查找 **Basic Azure Node.JS Express Application**(基本 Azure Node.JS Express 应用程序)。它看起来应该像这样
在我们开始之前,这里有一个小陷阱……由于 Visual Studio 2017 中出色的新安装工作流程(我是说真的!),如果你选择了一个基本的最小安装,NodeJS 可能没有安装。如果是这种情况,它将在你的项目模板中丢失——请注意,在下面的截图中有任何地方都找不到 NODE-JS 的提及。
要安装基本要求,你需要运行 Visual Studio 安装程序,然后从中选择 NodeJS 工具并进行安装。根据你选择的组件,这需要一些时间,所以去好好享受一杯茶吧。😊
对我们最重要的要求是 **Node.js development**(Node.js 开发)工具。
好的,经过这个小插曲,让我们回到之前的地方,创建一个新的 Node.js Express 项目。
**Express** 是一个非常流行的 Node.js Web 框架,它是一种非常轻量级的方式来显示使用 Node 的网页。这里有一个非常简单的例子
const express = require('express'
const app = express()
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.listen(3000, function () {
console.log('Example app listening on port 3000!')
})
在上面的代码中,我们声明了一个常量 ‘express’,并将其指向库 ‘express’。
然后我们创建另一个常量 ‘app
’(应用程序),并将其赋值给核心的 express()
方法。现在是轻量级的魔法……使用 ‘app.get
’,我们说‘当在 Node.js 中运行的 Web 应用程序使用 http GET
动词调用 Web 服务器的根 ‘/
’ 时,则返回 ‘response’(响应)为 ‘Hello world
’。另一行表示当应用程序启动并绑定到端口 3000 时,在控制台打印一条消息,表示它正在监听并准备好运行。非常棒!你可以在 官方 Node.js express 网站上学到更多关于 Express 的知识。
你可能会遇到的另一个陷阱……如果你将默认的 ‘c:\users\..\projects’ 作为项目主文件夹,你可能会遇到与文件夹路径长度相关的错误,如下所示。最快的解决方法是简单地选择一个离驱动器根目录尽可能近的文件夹,以保持整体项目路径较短。
最后,事情总会变化,所以最好检查一下 Node 是否有任何更新。要做到这一点,在解决方案资源管理器中,选中 ‘NPM
’ 项,右键单击,然后选择 **update npm packages**(更新 npm 包)。
为了检查一切是否按计划进行,我们现在只需按 **F5** 运行项目。
此时,你可能会收到一个安全警告,因为 Node.js 想要绑定到一个 TCP 端口……我们将允许它访问。
一切顺利的话,你应该会看到一个简单的 hello-world
,如下所示
如果你碰巧遇到这个错误,那么有一个简单的解决方法……
打开这里显示的 index.js 文件——我们将在第二个红色框区域做一个小的改动
在我的文件中,它是第 813 行——你可能不同。
我们将要改变这个
更改为以下内容:
我们要添加 ‘: function
’。如果你重新编译并运行,一切应该都能正常工作。
我已经向 Visual Studio Node 团队报告了这个问题,所以希望在你读到本文时它已经被修复了。
将 Node.js 发布到 Azure
将我们的简单测试网站部署到 Azure 再简单不过了。微软的优秀团队再次让我们变得非常容易……我每天都感谢他们!
在项目顶部,右键单击并选择 **Publish**(发布)。
在弹出的窗口中,选择 **Microsoft Azure App Service**(Microsoft Azure 应用服务)。
接下来我们需要做的是将应用程序分配给一个应用服务和资源组。如果你还没有这些。在接下来的屏幕中点击 **New**(新建)。
请注意,你分配给该应用程序的应用名称在 Azure DNS 命名空间中必须是唯一的,所以你可能需要尝试几个选项才能获得你想要的。
运行 Node 不需要沉重的计算实例,所以你可以选择一个非常轻量级的。
这是应用服务准备发布时的截图。点击 **Create**(创建)继续。
在远程设置好之后,Visual Studio 将继续将应用程序发布到 Azure。
当它完成魔法般的部署后,它应该会自动为你打开一个浏览器,你将看到基础应用程序已成功发布。
本系列的下一篇文章将介绍如何在本地设置在线学习平台并进行测试。
历史
- 2017 年 10 月 24 日:初始版本