关于nodejs中文站,眼下活跃度最好的知识站应该是http://www.cnodejs.org/ ,而http://cnodejs.org/则活跃度较低。Express.js是nodejs的一个MVC开发框架,而且支持jade等多种模板,是Node.js上最流行的Web开发框架。这几天刚接触PhoneGap,曾经也看了一些nodejs的基础但苦于时间有限一直没机会亲自搭建一个nodejs环境,今天周末,部署了PhoneGap到Android,顺便一同搭建了一下nodejs本地环境,自己的操作过程例如以下:
第1步:下载、安装文件
代开nodejs的官网http://www.nodejs.org/download/ 下载最新版本号,下载完毕之后,双击 node-v0.10.20-x86.msi,開始安装nodejs,默认是安装在C:\Program Files\nodejs文件夹。安装好后系统默认的环境变量path是C:\Documents and Settings\Administrator\Application Data\npm;能够依据须要手动指向本地安装文件夹,如:C:\Program Files\nodejs\node_modules\npm将全局文件夹设置设为本地初始默认安装文件夹一致。
第2步:安装相关模块环境
打开C:\Program Files\nodejs文件夹你会发现里面自带了Npm这个nodejs插件的管理工具,直接用Npm安装相关须要的相关模块就可以(其它有些系统可能须要单独安装NPM下载地址https://github.com/isaacs/npm,也可直接用Git工具下载git clone --recursive git://github.com/isaacs/npm.git下载完毕后,命令行首先定位到npm包所在文件夹,输入代码node cli.js install npm -gf 进行安装。)
系统開始菜单--程序--进入node.js command prompt 命令窗体
键入命令:cd C:\Program Files\nodejs 就可以进入nodejs 安装文件夹 C:\Program Files\nodejs
如今開始安装相关模块环境
node模块的安装分为全局模式和本地模式。普通情况下会以本地模式执行,包会被安装到和你的应用代码统计的本地node_modules文件夹下。在全局模式下,Node包会被安装到Node的默认安装文件夹下的node_modules下。
第一种方法是键入命令:npm install express 默认安装express的最新版本号。若在后面加版本号号可安装指定版本号,如npm install express@3.0.6 回车開始安装express,安装完毕后会在当前目录下的node_modules目录下多出express相关的两个目录express和.bin。
还有一种全局安装方式是键入命令:npm install express -g ,安装完毕命令行会提示 npm info ok。參数-g的含义是代表安装到全局环境里面。假设沒有-g的话会安装到当前node_modules目录下(如无则新建node_modules目录)。个人不建议刚開始学习的人使用这样的将包安装到全局环境中的做法,由于在js实例代码中,直接通过require()的方式是没有办法调用全局安装包的,报错 throw err;Error: Cannot find module 'express' ,此时能够将node_modules整个目录复制一份到你的项目project下。全局的安装是供命令行使用的,使用全局方式安装后,用户就能够在命令行中直接执行该组件包支持的命令,优点是能够提高程序的反复利用程度,避免相同的内容存在多份副本。缺点是难以处理不同的版本号依赖。这里的require()是node.js内置函数,用来引入其它模块以备代码中调用模块的函数和变量,默认下node.js会在NODE_PATH和眼下js所在项目目录下的node_modules目录下去寻找模块。因此,假设是全局安装,不复制系统安装node_modules目录到项目node_modules目录下,还能够选择将环境变量的NODE_PATH设置为C:\Program
Files\nodejs,设置完毕后再去项目文件夹执行命令node app.js就不会报错了。express.js继承自connect模块,所以若你的node_modules文件夹下没有connect模块也是不能执行的。
以上为本人的经验总结。后来查阅文档发现国外有更为具体的答复:
援引Marek的问题Error: Cannot find module ‘express’的解答:
This problems seems to be quite popular among Windows users. It seems to occur after node has been reinstalled or updated or when hidden attribute has been removed from C:\Users\IMaster\AppData folder. It might be one of those things that can make you feel
bad especially if you don’t wont to apply some quick hacks like: npm link express
Node returns error because is not able to find required module and that is why problem in most cases is actually easy to fix. First place to check would be require.paths. After typing it in node console I received:
Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
At the time of writing I am using v0.6.19 but you might see this or similar warning if you using newer version.
As stated you have 2 choices. You can install express (or another module) to local node_modules directory using npm install express or after installing module globally
npm install express -g
you can link it with your current project using
npm link express
Second and last option is to create or update NODE_PATH system variable pointing your node to the right place in the system. If you are Windows user use export command as shown below:
export NODE_PATH="C:\Users\IMarek\AppData\Roaming\npm\node_modules"
Now you should update PATH variable as well
set PATH=%PATH%;%NODE_PATH%
Try to run your module now.
You should be fine.
安装完毕Express后执行node app.js 浏览器输入http://localhost:3000可预览即表明express成功安装。
这里提示Express 500 Error: Cannot find module 'jade' 说明jade模块没有安装,windows无须手动下载jade包,已集成(假设其它地方须要,可在此下载https://github.com/visionmedia/jade)。输入npm install jade进行安装就可以。
jade安装完毕后如图:
关于 Express.js 中文入门指引手冊能够參考http://www.csser.com/board/4f77e6f996ca600f78000936
其它组件还有非常多,如mysql,能够依据个人须要能够选择进行安装。
默认情况下组件都是安装在C:\Program Files\nodejs\node_modules目录下,这也是nodejs相关组件的自己主动查找路径。
第3步:測试项目project
如今安装了express组件,尝试键入:express myapp 建立一个名为myapp的project,文件夹下多了一个 myapp 文件夹。
是否须要复制node_modules目录到myapp以下由上述npm express安装方式决定
在myapp下新建helloworld.js,代码例如以下:
var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8080); console.log('Server running at http://127.0.0.1:8080/');
进入node.js command prompt 命令窗体,进入C:\Program Files\nodejs\myapp文件夹
键入node helloworld.js
浏览器输入http://localhost:8080或者地址http://127.0.0.1:8080/
页面输出 :Hello World
第4步:安装supervisor提高nodejs调试效率
这一步不是必须,仅仅是为了提高nodejs开发效率的辅助操作。以往我们开发PHP项目,代码每改动一次,能够直接打开浏览器预览效果,不需手动重新启动服务。可是开发nodejs程序,调试的时候,不管你改动了代码的哪一部分,都须要重新启动服务才干生效。这是由于 Node.js 仅仅有在第一次引用到某部份时才会去解析脚
本文件,以后都会直接訪问内存,避免反复加载。。Node.js的这样的设计尽管有利于提高性能,却不利于开发调试,由于我们在开发过程中总是希望修改后马上看到效果,而不是每次都要终止进程并重新启动。supervisor 能够帮助你实现这个功能,它会监视你对代码的修改,并自己主动重新启动 Node.js。
supervisor的安装也非常easy:
直接用npm安装既可,键入命令: npm install supervisor -g 然后程序自己主动下载supervisor安装包到本地開始安装。
这里注意一点的就是,supervisor必须安装到全局,假设你不安装到全局,错误命令会提示你安装到全局。
假设不想安装到默认的全局,也能够自己改动全局路径到当前路径
npm config set prefix "路径"
安装完以后就能够用supervisor 来启动服务了。
supervisor app.js
补充:npm经常使用命令
(1)npm install moduleNames
安装Node模块
注意事项:假设在使用模块的时候不知道其名字,能够通过http://search.npmjs.org站点依照
索引值找到想要的模块。npm也提供了查询的功能 npm search indexName
安装完成后会产生一个node_modules文件夹,其文件夹下就是安装的各个node模块。
node的安装分为全局模式和本地模式。普通情况下会以本地模式执行,包会被安装
到和你的应用代码统计的本地node_modules文件夹下。在全局模式下,Node包会被
安装到Node的安装文件夹下的node_modules下。全局安装命令为
npm install -g moduleName。获知使用npm set global=true来设定安装模式
,npm get global能够查看当前使用的安装模式。npm install <name> --save 安装的同一时候,将信息写入package.json中
项目路径中假设有package.json文件时,直接使用npm install方法就能够依据dependencies配置安装全部的依赖包
这样代码提交到github时,就不用提交node_modules这个目录了。
(2)npm view moduleNames
查看node模块的package.json目录
注意事项:假设想要查看package.json目录下某个标签的内容,能够使用
npm view moduleName labelName
(3)npm list
查看当前文件夹下已安装的node包。同命令npm ll/npm ls/npm la
注意事项:Node模块搜索是从代码运行的当前文件夹開始的,搜索结果取决于当前使用的文件夹中
的node_modules下的内容。 npm list parseable=true能够文件夹的形式来展现当
前安装的全部node包
(4)npm help
查看帮助命令。假设要单独查看install命令的帮助,能够使用的npm help install
(5)npm view moudleName dependencies
查看包的依赖关系
(6)npm view moduleName repository.url
查看包的源文件地址
(7 npm view moduleName engines
查看包所依赖的Node的版本号
(8)npm help folders
查看npm使用的全部目录
(9)npm rebuild moduleName
用于更改包内容后进行重建
(10)npm outdated
检查包是否已经过时,此命令会列出全部已经过时的包,能够及时进行包的更新
(11)npm update moduleName
更新node模块
(12)$ npm uninstall moudleName
卸载node模块
(13)一个npm包是包括了package.json的目录,package.json描写叙述了这个目录的结构。訪
问npm的json目录的方法例如以下:
npm help json
此命令会以默认的方式打开一个网页,假设更改了默认打开程序则可能不会以网页的形式打
开。
(14)公布一个npm包的时候,须要检验某个包名是否已存在
npm search packageName
(15)非常多时候我们在使用一个npm包的时候常常会忘记了require其相互依赖的模块,我们能够
借助如例如以下命令来查看此模块相互依赖的包都有哪些
(16)npm init 会引导你创建一个package.json文件,包含名称、版本号、作者这些信息等
(17)npm rm <name>移除,卸载一个模块。有下面几种命令形式:
npm rm <name>
npm r <name>
npm uninstall <name>
npm un <name>
(18)npm root 查看当前project的包的安装路径,npm root -g 是查看全局的包的安装路径
(19)npm docs <packageName> 尝试当前包相应的文档URL,并使用浏览器打开该文档。
(20)npm config ? 获取配置文件信息,如环境变量,npmrc文件,package.json
很多其它命令请參看官方文档https://npmjs.org/doc/
本文參考文档:
1. Error: Cannot find module ‘express’ http://blog.i-evaluation.com/2012/09/17/error-cannot-find-module-express/
2. Node.js Manual & Documentation http://nodejs.org/docs/v0.4.1/api/modules.html
3. nodejs-win http://code.google.com/p/nodejs-win/
4. nodejs官方文档 https://npmjs.org/doc/
下面为拓展链接:
Node + Redis = Fun http://howtonode.org/node-redis-fun
Node.js家园 http://nodejs.gamesys.net/page/11
Nodejs开源应用 http://obullxl.duapp.com/