写点什么

深入浅出 Node.js(二):Node.js&NPM 的安装与配置

  • 2011-11-30
  • 本文字数:4690 字

    阅读完需:约 15 分钟

专栏的第二篇文章《Node&NPM 的安装与配置》介绍 Node 的安装部署、环境配置以及 NPM 的安装。

Node.js 安装与配置

Node.js 已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对 0.4.x 版本而言的,并非适合最新的 0.6.x 的版本情况了,对此,我们将在 0.6.x 的版本上介绍 Node.js 的安装和配置。(本文一律以 0.6.1 为例,0.6 的其余版本,只需替换版本号即可。从 http://nodejs.org/#download 可以查看到最新的二进制版本和源代码)。

Windows 平台下的 Node.js 安装

在过去,Node.js 一直不支持在 Windows 平台下原生编译,需要借助 Cygwin 或 MinGW 来模拟 POSIX 系统,才能编译安装。幸运的是 2011 年 6 月微软开始与 Joyent 合作移植 Node.js 到 Windows 平台上( http://www.infoq.com/cn/news/2011/06/node-exe ),这次合作的成果最终呈现在 0.6.x 的稳定版的发布上。这次的版本发布使得 Node.js 在 Windows 平台上的性能大幅度提高,使用方面也更容易和轻巧,完全摆脱掉 Cygwin 或 MinGW 等实验室式的环境,并且在某些细节方面,表现出比 Linux 下更高的性能,细节参见 http://www.infoq.com/news/2011/11/Nodejs-Windows

在 Windows(Windows7)平台下,我将介绍二种安装 Node.js 的方法,即普通和文艺安装方法。

普通的安装方法

普通安装方法其实就是最简单的方法了,对于大多 Windows 用户而言,都是不太喜欢折腾的人,你可以从这里( http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi )直接下载到 Node.js 编译好的 msi 文件。然后双击即可在程序的引导下完成安装。

在命令行中直接运行:

复制代码
node -v

命令行将打印出:

复制代码
v0.6.1

该引导步骤会将 node.exe 文件安装到 C:\Program Files (x86)\nodejs\目录下,并将该目录添加进 PATH 环境变量。

文艺的安装方法

Windows 平台下的文艺安装方法主要提供给那些热爱折腾,喜欢编译的同学们。在编译源码之前需要注意的是你的 Windows 系统是否包含编译源码的工具。Node.js 的源码主要由 C++ 代码和 JavaScript 代码构成,但是却用 gyp 工具( http://code.google.com/p/gyp/ )来做源码的项目管理,该工具采用 Python 语言写成的。在 Windows 平台上,Node.js 采用 gyp 来生成 Visual Studio Solution 文件,最终通过 VC++ 的编译器将其编译为二进制文件。所以,你需要满足以下两个条件:

  1. Python(Node.js 建议使用 2.6 或更高版本,不推荐 3.0),可以从这里( http://python.org/ )获取。
  2. VC++ 编译器,包含在 Visual Studio 2010 中(VC++ 2010 Express 亦可),VS2010 可以从这里( http://msdn.microsoft.com/en-us/vstudio/hh388567 )找到。

下载 Node.js 的 0.6.1 版本的源码压缩包( http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz )并解压之。

通过命令行进入解压的源码目录,执行 vcbuild.bat release 命令,然后经历了漫长的等待后,编译完成后,在 Release 目录下可以找到编译好的 node.exe 文件。通过命令行执行 node -v。

命令行返回结果为:

复制代码
v0.6.1

事实上,如果你的编译环境中存在 WiX 工具集( http://wix.sourceforge.net/ ),执行 vcbuild.bat msi release 命令,你将会在 Relase 目录下找到 node.msi。

是的,我们回到了一开始的普通安装方法。所谓文艺就是多走一些路,多看一些风景罢了。

Unix/Linux 平台下的 Node.js 安装

由于 Node.js 尚处于 v0.x.x 的版本的快速发展中,Unix/Linux 平台的发行版都不会预置 Node 的二进制文件,通过源码进行编译安装是目前最好的选择。而且用 Unix/Linux 系统的同学们多数都是文艺程序员,本节只介绍如何通过源码进行编译和安装。

安装条件

如同在 Windows 平台下一样,Node.js 依然是采用 gyp 工具管理生成项目的,不同的是通过 make 工具进行最终的编译。所以 Unix/Linux 平台下你需要以下几个必备条件,才能确保编译完成:

  1. Python。用于 gyp,可以通过在 shell 下执行 python 命令,查看是否已安装 python,并确认版本是否符合需求(2.6 或更高版本,但不推荐 3.0)。
  2. 源代码编译器,通常 Unix/Linux 平台都自带了 C++ 的编译器(GCC/G++)。如果没有,请通过当前发行版的软件包安装工具安装 make,g++ 这些编译工具。
  3. Debian/Ubuntu 下的工具是 apt-get
  4. RedHat/centOS 下通过 yum 命令
  5. Mac OS X 下你可能需要安装 xcode 来获得编译器
  6. 其次,如果你计划在 Node.js 中启用网络加密,OpenSSL 的加密库也是必须的。该加密库是 libssl-dev,可以通过 apt-get install libssl-dev 等命令安装。

检查环境并安装

完成以上预备条件后,我们获取源码并进行环境检查吧:

复制代码
wget <a href="http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz">http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz</a>
tar zxvf node-v0.6.1.tar.gz
cd node-v0.6.1
./configure
上面几行命令是通过 wget 命令下载最新版本的代码,并解压之。./configure 命令将会检查环境是否符合 Nodejs 的编译需要。
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for gcc : ok
Checking for library dl : yes
Checking for openssl : yes
Checking for library util : yes
Checking for library rt : yes
Checking for fdatasync(2) with c++ : yes
'configure' finished successfully (7.350s)

如果检查没有通过,请确认上面提到的三个条件是否满足。如果 configure 命令执行成功,就可以进行编译了:

复制代码
make
make install

Nodejs 通过 make 工具进行编译和安装(如果 make install 不成功,请使用 sudo 以确保拥有权限)。完成以上两步后,检查一下是否安装成功:

复制代码
node -v

检查是否返回:

复制代码
v0.6.1

至此,Nodejs 已经编译并安装完成。如需卸载,可以执行 make uninstall 进行卸载。

小结

以上介绍了 *nix 和 Windows 平台下 Nodejs 的安装,之后可以如同 Nodejs 官方网站上介绍的那样,编写 example.js 文件。

复制代码
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

在命令行中执行它:

复制代码
node example.js

你就可以通过浏览器访问 http://127.0.0.1:1337 得到 Hello World 的响应。

安装 NPM

NPM 的全称是 Node Package Manager,如果你熟悉 ruby 的 gem,Python 的 PyPL、setuptools,PHP 的 pear,那么你就知道 NPM 的作用是什么了。没错,它就是 Nodejs 的包管理器。Nodejs 自身提供了基本的模块。但是在这些基本模块上开发实际应用需要较多的工作。所幸的是笔者执笔此文的时候 NPM 上已经有了 5112 个 Nodejs 库或框架,这些库从各个方面可以帮助 Nodejs 的开发者完成较为复杂的应用。这些库的数量和活跃也从侧面反映出 Nodejs 社区的发展是十分神速和活跃的。下面我将介绍安装 NPM 和通过 NPM 安装 Nodejs 的第三方库,以及在大陆的网络环境下,如何更好的利用 NPM。

Unix/Linux 下安装 NPM

就像 NPM 的官网( http://npmjs.org/ )上介绍的那样,安装 NPM 仅仅是一行命令的事情:

复制代码
curl http://npmjs.org/install.sh | sh

这里详解一下这句命令的意思,curl http://npmjs.org/install.sh 是通过 curl 命令获取这个安装 shell 脚本,按后通过管道符| 将获取的脚本交由 sh 命令来执行。这里如果没有权限会安装不成功,需要加上 sudo 来确保权限:

复制代码
curl http://npmjs.org/install.sh | sudo sh

安装成功后执行 npm 命令,会得到一下的提示:

复制代码
Usage: npm <command>
where <command> is one of:
adduser, apihelp, author, bin, bugs, c, cache, completion,
config, deprecate, docs, edit, explore, faq, find, get,
help, help-search, home, i, info, init, install, la, link,
list, ll, ln, ls, outdated, owner, pack, prefix, prune,
publish, r, rb, rebuild, remove, restart, rm, root,
run-script, s, se, search, set, show, star, start, stop,
submodule, tag, test, un, uninstall, unlink, unpublish,
unstar, up, update, version, view, whoami

我们以 underscore 为例,来展示下通过 npm 安装第三方包的过程。

复制代码
npm install underscore

返回:

复制代码
underscore@1.2.2 ./node_modules/underscore

由于一些特殊的网络环境,直接通过 npm install 命令安装第三方库的时候,经常会出现卡死的状态。幸运的是国内 CNode 社区的 @fire9 同学利用空余时间搭建了一个镜像的 NPM 资源库,服务器架设在日本,可以绕过某些不必要的网络问题。你可以通过以下这条命令来安装第三方库:

复制代码
npm --registry "<a href="http://npm.hacknodejs.com/">http://npm.hacknodejs.com/</a>" install underscore

如果你想将它设为默认的资源库,运行下面这条命令即可:

npm config set registry “ http://npm.hacknodejs.com/

设置之后每次安装时就可以不用带上—registry 参数。值得一提的是还有另一个镜像可用,该镜像地址是 http://registry.npmjs.vitecho.com ,如需使用,替换上面两行命令的地址即可。

Windows 下安装 NPM

由于 Nodejs 最初在 Linux 开发下的历史原因,导致 NPM 一开始也不支持 Windows 环境,但是随着 Nodejs 成功移植到到 Windows 平台,NPM 在 Windows 下的需求亦是日渐增加。下面开始 Windows 下的 NPM 之旅吧。

安装 GIT 工具

由于 github 网站不支持直接下载打包了所有 submodule 的源码包,所以需要通过 git 工具来签出所有的源码。从 http://code.google.com/p/msysgit/downloads/list ,可以下载到 msysgit 这个 Windows 平台下的 git 客户端工具(最新版本文件为 Git-1.7.7.1-preview20111027.exe)。在下载之后双击安装。

下载 NPM 源码

打开命令行工具(CMD),执行以下命令,可以通过 msysgit 签出 NPM 的所有源码和依赖代码并安装 npm。

复制代码
git clone --recursive git://github.com/isaacs/npm.git
cd npm
node cli.js install npm -gf

在执行这段代码之前,请确保 node.exe 是跟通过 node.msi 的方式安装的,或者在 PATH 环境变量中。这段命令也会将 npm 加入到 PATH 环境变量中去,之后可以随处执行 npm 命令。如果安装中遇到权限方面的错误,请确保 cmd 命令行工具是通过管理员身份运行的。安装成功后,执行以下命令:

复制代码
npm install underscore

返回:

复制代码
underscore@1.2.2 ./node_modules/underscore

如此,Windows 平台下的 NPM 安装完毕。如果遭遇网络问题无法安装,请参照 Linux 下的 NPM 命令,添加镜像地址。

参考文献

关于作者

田永强,新浪微博 @朴灵,前端工程师,现职于 SAP,从事 Mobile Web App 方面的研发工作,对 NodeJS 持有高度的热情,寄望打通前端 JavaScript 与 NodeJS 的隔阂,将 NodeJS 引荐给更多的前端工程师。兴趣:读万卷书,行万里路。个人 Github 地址: http://github.com/JacksonTian

关注 IT 趋势,承载前沿、深入、有温度的内容。感兴趣的读者可以搜索 ID:laocuixiabian,或者扫描下方二维码加关注。


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2011-11-30 09:00211860

评论

发布
暂无评论
发现更多内容

企业做数字化转型,请先避开这5个坑!

优秀

数字化转型

大模型时代,企业如何重构 AI 应用落地范式?

Fabarta

IDC公布2022中国大数据平台私有化部署市场份额,柏睿数据位列第一梯队

新消费日报

全球视频编码领域顶级大赛放榜,网易云信首次参赛即斩获H.265赛道多项指标第一

网易云信

音视频 H.265 音视频通话

什么样的程序员在35岁后仍然保持竞争力?

互联网工科生

程序员 技术 持续学习 经验

MobTech秒验,一键登录快人一步!

MobTech袤博科技

前端 App 免密登录 登录验证 秒验

国内常见的16款低代码开发平台介绍

优秀

低代码开发平台 低代码平台 企业级低代码平台

对线面试官 - HashMap

派大星

HashMap底层原理 Java 面试题

AI算力爆发,新职业出现,你发现了吗?

小魏写代码

人工智能 AI算力

云图说丨初识华为云OrgID:轻松实现统一帐号、统一授权

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

Flink 实践教程:入门(11):MongoDB Sink 的使用

腾讯云大数据

流计算 Oceanus

深度解读低代码

高端章鱼哥

程序员 低代码 低门槛

2023 数字生态发展大会,和鲸 ModelWhale 入选中国信通院“铸基计划”《高质量数字化转型产品及服务全景图》

ModelWhale

数字化转型 中国信通院 铸基计划

聊聊测试当下的求职困境

老张

软件测试 求职面试

软件测试/测试开发丨Python 内置库 文件处理 学习笔记分享

测试人

Python 程序员 软件测试 文件处理 内置库

ChatGPT下程序员应该何去何从?

小齐写代码

低代码:告别繁琐,提速软件开发

互联网工科生

软件开发 低代码 数字化

[硬核技术] 时序数据预测算法研究:Prophet

乘云数字DataBuff

ChatGPT下程序员应该何去何从?

小魏写代码

ChatGPT 新手用ChatGPT

和鲸 ModelWhale 与海光适配认证,“国产 CPU +开发平台” 双轮驱动信创生态建设及 AI 产业应用

ModelWhale

cpu 数字化转型 信创 数据科学 信创产业

新鲜出炉!Go薪资最高,JS需求量最大!

树上有只程序猿

Java c++ Python 编程语言

区块链服务网络的顶层设计与应用实践

BSN研习社

DWS轻量化更新黑科技:宽表加工优化

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

建设数字工厂:生产订单批量拆分的实现方法

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

JMeter 查看 TPS 数据

Liam

程序员 测试 Jmeter 测试工具 TPS

人人都有大模型用!大模型ChatGLM2-6B新手速通!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

【7.21-7.28】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

暑期参加百度网盘AI大赛,夺万元现金、获大厂内推!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

信创产业未来发展如何

小魏写代码

信创 信创产业

PoseiSwap 即将开启质押,利好刺激下 POSE通证短时涨超 30%

BlockChain先知

深入浅出Node.js(二):Node.js&NPM的安装与配置_JavaScript_田永强_InfoQ精选文章