在本文中,笔者将展示如何在 windows 10 中搭建 node.js 环境。并且,作为检验,笔者会在新搭建的环境中运行自己正在努力的一个项目(该项目依赖于 koa, pg, amqplib 等模块)。
请注意:本文的首要目的是为 node.js 项目搭建开发者环境,而非运行某个项目。笔者随后会介绍如何部署至 azure 平台,但这已经超出了本文的讨论范围。
在 windows 中用 node.js 进行开发一度是非常麻烦的事,但是现在这一状况相较于一两年前有了较大改善。这也是为什么,在选择 windows 7 还是 windows 10 作为本文主题之时,我们犹豫不决的原因。
在本文中,我们将尽可能使用最新的工具与应用(并使用其64位版本)。笔者知道在公司环境中这可能无法保证,但保持工具的前卫是很重要的。
本文所有的安装都会在本机中进行。我不建议在 cygwin 中搭建 node 环境。此外,尽管 virtualbox 是免费的,当我在 windows 机器上运行 linux 虚拟机时,却总是问题不断。
首先,安装 git。使用默认设置,这些设置是相当合理的。
笔者通常会在主目录下创建一个项目文件夹。设置时,右键单击该文件夹,选择 “git bash here”,再通过<code>git --version</code>指令检查 git 版本。
这是很好的 bash 环境,你可以创建一个 <code>.bash_profile</code>,在你打开 bash 窗口时执行。此外,这不是 <code>cmd.exe</code> 窗口,你可以查看一些选项(单击左上角的图标)。你可以通过鼠标中键将文本拷贝至窗口(就像在创建的 linux 终端一样)。
npm 伴随着 node 而来。成功安装 node.js 之后,包管理器 npm 也应当可用了。
node 包通常会依赖带有本地代码的包,因此你必须安装 visual studio。
node-gpy 是围绕 python gyp (generate your projects)的一款包装程序,该工具能为 gcc, xcode 以及 visual studio 生成项目文件。由于 windows 开发实际上是通过 visual studio 进行的,我们会用其支持 visual studio。
下一步,进入环境变量设置(在系统,高级设置中),并将 <code>gyp_msvs_version=2015</code> 添加到全局变量中,因为下一步是 visual studio 2015 的安装。
在 gyp 的安装手册中还提到了 windows 7 sdks,但是我们在前面已经安装了 win 8 sdks,所以希望不会用到 win 7 sdks。
fsevents 是可选依赖,且只能用于 osx 系统;这只是一个警告——其余模块并无问题。
在数据库端,笔者添加了默认用户,并创建了一个数据库。不过,这些都可以在 pgadmin 客户端轻松完成。
通常,node.js 项目都高度依赖环境变量。
从上面的项目截图中可以看到,is_interactive 是一个环境变量(env var),这在 linux 与 osx 系统中很容易定义,但是在 windows 中则有一点不同。
在 package.json 的脚本部分,你可以使用安装在本地的 node 模块。笔者建议你尽量避免通过 <code>npm -g</code> 指令全局地安装包。
此外,笔者也不建议在 windows (更精确地说,在跨平台项目中)的脚本部分直接添加环境变量,其实,我们有别的选择。
最清楚的解决方法是对每一脚本行使用一条指令(如你所见,我们的 <code>npm run lint</code> 指令运行良好)。
不要使用 bash 脚本,cmd 无法处理这些脚本。cmd.ex 支持 <code>&&</code>,因此两三条指令还行,将一整个 shell 脚本写做一行就不行了(尤其不应带有 bash 语言特性)。
为了支持脚本,这是可行的。但是为了运行我们的应用,就需要许多环境变量。
笔者通常会在 .gitignore_global 文件(在主目录下,记得用 <code>git config --global core.excludesfile ~/.gitignore_global</code> 进行初始化)中加入 <code>nodemon.*</code>,这样一来,我的项目中便可以有多个 nodemon json 模板。
尽管不是非常优雅的解决方案,笔者通常会全局地安装 nodemon。有时,在开发中直接手动启动 nodemon,而不是通过适当的运行脚本,更为简单。
有了上面的 json,现在可以启动我的微服务了,如下所示:
当然,由于笔者不愿监视文件变化,nodemon 可能不是最佳的仅用于运行脚本的解决方案。对于那些情况,笔者通常会将 nodemon.json 文件转化为 nodemon.sh,将每一个环境变量导出至后者。请注意:你可以根据自己的喜好随意命名该文件,但是不要忘记将其添加至忽略文件 ——不慎将该文件推入资源库会造成很大的麻烦:
之后,笔者可以在命令行中以其为源文件(源引nodemon.dev.sh)——这样做是为了我们当前使用的 mingw bash,但是,如果将其转化为传统的 bat 文件,会更为简单。由于我们的数据库设置需要几个环境变量,而笔者不愿监视之,这是最快也最粗暴的在本地运行的方法。在云供应商环境中,笔者会更加合理地设置环境变量。
到此为止,项目顺利运行了,就如同在 osx 或 linux 系统中一样。
以上即为我们简短的在 windows 10 中配置 node.js 的教程。npm 中的一些模块可能不支持 windows,但是这一情况正在好转。windows 拥有许多美观友好的 gui 工具,visual studio 也是很强大的武器。如果你的团队愿意承担额外的开销,这或许是一个可行的选择。