写点什么

深入浅出 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:00211962

评论

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

代码注释的艺术,优秀代码真的不需要注释吗?

阿里技术

代码注释

实现CyclicBarrier的原理和在Go中的应用

Jack

适用于Mac的七款最佳高清音乐播放器,专为发烧友而生!

Rose

iTunes mac音乐播放器 苹果系统 音乐软件

好的索引当然是要覆盖了!

江南一点雨

MySQL 数据库

一顿饭的事儿,搞懂了Linux5种IO模型

Java你猿哥

Java Linux 后端 ssm io

pyFBI让Python运行的性能可视化

IT蜗壳-Tango

三周年连更

健康运动app(2)

鸿蒙之旅

OpenHarmony 三周年连更

不同设备如何统一语言编程平台高效开发?本文为你揭秘

HarmonyOS开发者

HarmonyOS

增强型语言模型——走向通用智能的道路?

百度Geek说

人工智能 机器学习 语言模型 企业号 5 月 PK 榜

ElasticSearch中文分词和模糊查询

北桥苏

php elasticsearch thinkphp

技术领先、“忠”于业务,用友走出多维数据库的价值之路

用友BIP

程序员 35 岁危机的核心实质是什么?

海拥(haiyong.site)

三周年连更

监控服务与zabbix介绍

乌龟哥哥

三周年连更

携手共赢 HashData亮相华为合作伙伴大会

酷克数据HashData

适用于ARM的Linux系统镜像资源+安装教程

Rose

Linux Mac Parallels Desktop 虚拟机 系统镜像

从零开始打造一款基于SpringBoot+SpringCloud的后台权限管理系统

做梦都在改BUG

Java Spring Cloud Spring Boot 权限管理

中国开源未来发展峰会“问道 AI 分论坛”即将开幕!

kk-OSC

峰会

所谓高手,就是跨过坑和大海| 社区征文

鸿蒙之旅

三周年征文

Java 网络编程详解

timerring

Java

需求梳理会开2天是否合理?

BY林子

软件质量 需求分析 需求工程师 需求梳理

Django-Vue-Admin基于django+vue前后端分离开箱即用框架

巨梦科技

django Vue

华为研究院19级研究员几年心得终成趣谈网络协议文档,附大牛讲解

做梦都在改BUG

Java 计算机网络 网络协议

发布会实录|悠易科技CTO李旸:洞察新引擎 品牌新增长

游读分享

Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile

wljslmz

Linux 三周年连更

我把互联网面试问烂了的Java面试八股文总结了一下(带答案,精心打磨,建议收藏)

架构师之道

Java 面试

阿里Dubbo技术负责人准备的源码教程,很有大厂风格

做梦都在改BUG

Java dubbo

2步打通ModelArts和Astro,实现AI应用快速落地

华为云开发者联盟

人工智能 低代码 华为云 华为云开发者联盟 企业号 5 月 PK 榜

美团太细了!HashMap可以存null,ConcurrentHashMap不可以为什么

Java你猿哥

Java hashmap ssm

苹果Mac电脑安装AutoCAD 2024卡死无响应,怎么办

Rose

cad AutoCAD 2024 Mac版 AutoCAD 2024下载 无响应

已有多人中招:这张特殊二维码可致微信闪退,还会进入安全模式

Rose

微信防撤回 微信下载 微信小助手 微信闪退

Omi NTFS磁盘管理 支持在 Mac 上修复和格式化 NTFS 磁盘

Rose

NTFS Disk by Omi NTFS NTFS 磁盘管理器 ntfs

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