文档章节

如何在 Windows 10 中搭建 Node.js 环境?

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2016/06/07 15:51
字数 2518
阅读 27
收藏 3

【编者按】本文作者为 Szabolcs Kurdi,主要通过生动的实例介绍如何在 Windows 10 中搭建 Node.js 环境。文章系国内 ITOM 管理平台 OneAPM 编译呈现。

在本文中,笔者将展示如何在 Windows 10 中搭建 Node.js 环境。并且,作为检验,笔者会在新搭建的环境中运行自己正在努力的一个项目(该项目依赖于 koa, pg, amqplib 等模块)。

请注意:本文的首要目的是为 Node.js 项目搭建开发者环境,而非运行某个项目。笔者随后会介绍如何部署至 Azure 平台,但这已经超出了本文的讨论范围。

##准备工作 在 Windows 中用 Node.js 进行开发一度是非常麻烦的事,但是现在这一状况相较于一两年前有了较大改善。这也是为什么,在选择 Windows 7 还是 Windows 10 作为本文主题之时,我们犹豫不决的原因。

尽管 Windows 7 仍旧非常流行,而且 Windows 10 有一些不好的风闻(由于评价标准及数据收集范围的不同),我们还是决定选择 Windows 10 为试验对象,因为确保最新的操作系统对保证应用安全至关重要。

在本文中,我们将尽可能使用最新的工具与应用(并使用其64位版本)。笔者知道在公司环境中这可能无法保证,但保持工具的前卫是很重要的。

本文所有的安装都会在本机中进行。我不建议在 Cygwin 中搭建 Node 环境。此外,尽管 VirtualBox 是免费的,当我在 Windows 机器上运行 Linux 虚拟机时,却总是问题不断。

##步骤1:安装 Git 首先,安装 Git。使用默认设置,这些设置是相当合理的。

笔者通常会在主目录下创建一个项目文件夹。设置时,右键单击该文件夹,选择 “Git bash here”,再通过git --version指令检查 git 版本。

这是很好的 bash 环境,你可以创建一个 .bash_profile,在你打开 bash 窗口时执行。此外,这不是 cmd.exe 窗口,你可以查看一些选项(单击左上角的图标)。你可以通过鼠标中键将文本拷贝至窗口(就像在创建的 Linux 终端一样)。

##步骤2:在 Windows 10 上安装 Node.js 下载并安装 Node.js。使用其 LTS(长期支持)版本。

笔者不建议并排安装多个版本,因为 Node 版本管理器并未正式支持 Windows ——不过,你仍有一些备选方案,比如 nvm-windowsnodist。其实,即便是在其他系统中,全局安装不同版本的 node 工具仍然像是在自找麻烦。

##步骤3:更新 npm npm 伴随着 Node 而来。成功安装 Node.js 之后,包管理器 npm 也应当可用了。

打开一个 bash shell,通过 npm --version 检查版本号。如果 npm 是 2.x 版本,则应该升级到版本3,这能解决许多问题(对我们而言,最重要的是其处理对等依赖的方式)。在开始菜单中搜索 Power Shell,以管理员身份运行,并遵循以下步骤

如何在 Windows 10 中搭建 Node.js 环境?

##步骤4:安装 Visual StudioPython Node 包通常会依赖带有本地代码的包,因此你必须安装 Visual Studio。

Node-gpy 是围绕 Python GYP (Generate Your Projects)的一款包装程序,该工具能为 Gcc, XCode 以及 Visual Studio 生成项目文件。由于 Windows 开发实际上是通过 Visual Studio 进行的,我们会用其支持 Visual Studio。

###安装 Python(2.x 版本) 如你所见,你会用到 Python,因此下载其64位的 2.x 版本并安装之。你可以遵循默认设置,并选择 “Add to path (添加至路径)”选项。这会将 Python 二进制添加到全局路径,意味着最终你要先登出再登陆。

下一步,进入环境变量设置(在系统,高级设置中),并将 GYP_MSVS_VERSION=2015 添加到全局变量中,因为下一步是 Visual Studio 2015 的安装。

如何在 Windows 10 中搭建 Node.js 环境?

###安装 Visual Studio (VS2015) 不同于2012之前的版本,VS2015 能与64位的 Node.js 和谐工作。很快,我们将学习 Node-gyp 针对 Windows 10 的教程

除非你的机器上已经安装了完整的 VS,请下载 Visual Studio 2015 社区版,选择自定义安装并选定完全的 Visual C++ 分支(不带 XP 支持),此外,在工具中选择 Windows SDKs。如果在安装过程中出现任何差错,你可以点击程序与特性(Programs and Features),选择 VS2015,进行更改与修正。

在 gyp 的安装手册中还提到了 Windows 7 SDKs,但是我们在前面已经安装了 Win 8 SDKs,所以希望不会用到 Win 7 SDKs。

##步骤5:安装包依赖 目前,笔者正在开发 Trace 中的告警微服务,所以我会通过 npm -i 指令安装所需的包依赖。得到的结果如下图所示:

如何在 Windows 10 中搭建 Node.js 环境?

Fsevents 是可选依赖,且只能用于 OSX 系统;这只是一个警告——其余模块并无问题。

该微服务用到了 Postgres 与 RabbitMQ,因此笔者也安装了二者(连同 Erlang)。此处,与 OSX brew(与 apt、Chocolatey 相似的一款包管理器)以及 rocket(一款服务管理器)配置相比,唯一的不同是我必须手动在 15672 端口启用 web 管理员

在数据库端,笔者添加了默认用户,并创建了一个数据库。不过,这些都可以在 PgAdmin 客户端轻松完成。

##步骤6:处理环境变量 通常,Node.js 项目都高度依赖环境变量。

如何在 Windows 10 中搭建 Node.js 环境?

从上面的项目截图中可以看到,IS_INTERACTIVE 是一个环境变量(env var),这在 Linux 与 OSX 系统中很容易定义,但是在 Windows 中则有一点不同。

在 package.json 的脚本部分,你可以使用安装在本地的 node 模块。笔者建议你尽量避免通过 npm -g 指令全局地安装包。

此外,笔者也不建议在 Windows (更精确地说,在跨平台项目中)的脚本部分直接添加环境变量,其实,我们有别的选择。

Npm 会直接将这些指令传递至 OS,在本例中,传递到 NT 命令解释器(cmd.exe)。此处,最快捷的解决办法是将脚本行拷贝到我们的 bash 窗口,并运行之。但是,理所当然,这不是长远的解决办法。最新发布的 Windows bash shell 支持(目前仍处于测试阶段)很可能会解决此问题。

如何在 Windows 10 中搭建 Node.js 环境?

最清楚的解决方法是对每一脚本行使用一条指令(如你所见,我们的 npm run lint 指令运行良好)。

任何依赖于 flashvars (临时环境变量)或试图同时完成许多操作的指令,都应该写在某个 /scripts 文件夹下,作为 Node 可执行的 JavaScript 文件。

不要使用 bash 脚本,cmd 无法处理这些脚本。Cmd.ex 支持 &&,因此两三条指令还行,将一整个 shell 脚本写做一行就不行了(尤其不应带有 bash 语言特性)。

为了支持脚本,这是可行的。但是为了运行我们的应用,就需要许多环境变量。

在 RisingStack,我们在开发阶段会使用 nodemon(不过,有些人或许会用 pm2)。Nodemon 是一款文件监视器,会在开始时根据你定义的环境变量,解析 nodemon.json 文件。

如何在 Windows 10 中搭建 Node.js 环境?

笔者通常会在 .gitignore_global 文件(在主目录下,记得用 git config --global core.excludesfile ~/.gitignore_global 进行初始化)中加入 nodemon.*,这样一来,我的项目中便可以有多个 nodemon json 模板。

尽管不是非常优雅的解决方案,笔者通常会全局地安装 nodemon。有时,在开发中直接手动启动 nodemon,而不是通过适当的运行脚本,更为简单。

有了上面的 json,现在可以启动我的微服务了,如下所示:

如何在 Windows 10 中搭建 Node.js 环境?

当然,由于笔者不愿监视文件变化,nodemon 可能不是最佳的仅用于运行脚本的解决方案。对于那些情况,笔者通常会将 nodemon.json 文件转化为 nodemon.sh,将每一个环境变量导出至后者。请注意:你可以根据自己的喜好随意命名该文件,但是不要忘记将其添加至忽略文件 ——不慎将该文件推入资源库会造成很大的麻烦:

export NODE_ENV="development"  
export PORT=3060  
export AMQP_URI="amqp://localhost:5672/"  
export EMAIL_SENDER_NAME="Developer"  #etc.

之后,笔者可以在命令行中以其为源文件(源引nodemon.dev.sh)——这样做是为了我们当前使用的 MinGW bash,但是,如果将其转化为传统的 bat 文件,会更为简单。由于我们的数据库设置需要几个环境变量,而笔者不愿监视之,这是最快也最粗暴的在本地运行的方法。在云供应商环境中,笔者会更加合理地设置环境变量。

到此为止,项目顺利运行了,就如同在 OSX 或 Linux 系统中一样。

以上即为我们简短的在 Windows 10 中配置 Node.js 的教程。npm 中的一些模块可能不支持 Windows,但是这一情况正在好转。Windows 拥有许多美观友好的 GUI 工具,Visual Studio 也是很强大的武器。如果你的团队愿意承担额外的开销,这或许是一个可行的选择。

OneAPM 能帮助您轻松锁定 Node.js 应用性能瓶颈,通过强大的 Trace 记录逐层分析,直至锁定行级问题代码。以用户角度展示系统响应速度,以地域和浏览器维度统计用户使用情况。想阅读更多技术文章,请访问 OneAPM 官方博客

本文转自 OneAPM 官方博客

原文地址:https://blog.risingstack.com/node-js-windows-10-tutorial/

© 著作权归作者所有

OneAPM蓝海讯通
粉丝 94
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
windows下nodejs开发环境的安装与配置

什么是Node.js?还服务器端javascript?对于这个概念我在这篇文章不做解释,可以自己去搜索了解下,服务器端js不是新技术,只是最近的node.js的火爆让他爆发了,我会在以后的文章里解释什么是n...

durban
2012/04/09
8.9K
0
深入浅出Node.js(二):Node.js&NPM的安装与配置

Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0.6.x的版本上介绍Node.js的安装和配...

leeldy
2012/10/25
508
0
Node.js的安装及简单使用

今天要搭建node.js,所以自己就总结了一下。该文章不是原创。 什么是node.js? 每一种解析器都是一个运行环境,不但允许js定义各种数据结构,进行各种计算,还允许js使用允许环境提供的内置对...

AFinalDream
2017/04/06
0
0
appium 安装教程链接整理

Appium 做Android 自动化测试环境搭建+示例代码运行 :http://blog.csdn.net/pajack/article/details/29390031 安装eclipse的maven插件:http://jingyan.baidu.com/article/60ccbceb01de4d64......

智能小松鼠
2014/11/26
957
2
在Windows上搭建PhoneGAP(crodova)的开发环境

PhoneGAP是一个可以将web应用打包成移动应用的开源框架,使用它可以迅速的将HTML、CSS和JavaScript开发的web应用打包成跨平台的移动应用程序,而Apache Cordova是PhoneGap贡献给Apache后的开...

宋国君
2017/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[转]详解netty原理分析

详解netty原理分析 Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,...

morpheusWB
14分钟前
1
0
for循环

九九乘法表 示例:for(int i = 1; i <= 9; i++){ for (int j = 1; j <= i; j++) { // 每次开始i循环,j都会重新定义为j=1,然后开始循环计算 System.out.print(j +......

Shutting
37分钟前
9
0
小王子1

一定要帅! 韩国设计师品牌 insgram全世界得网红 韩国潮男穿搭 HM 找到穿衣服最好看的人,跟他比,比他好看。 在兴趣前,不要表现目的性,压力 关系是不热就冷的! 不喜欢压力,不喜欢负责任...

阿锋zxf
56分钟前
11
0
时间戳

1 loadTimeString(ts) { var d = new Date(); if (String(ts).length == 10) { d = new Date(ts * 1000); ......

东方巨人
58分钟前
7
0
Redis Cluster

Redis Cluster 集群 redis集群有以下几种方式 普通一主多从 普通一主多从+哨兵 cluster分片模式 一主多从 搭建方式网上很多,就不多描述了。 这种集群方式,一般master用作写,slave用做读,...

lazy~
58分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部