上周末开始看NodeJS,一路下来从安装到入门代码都遇到了一些问题,今天总算解决了一点,写下来分享一下:
安装部分:
1. 首先我的系统是windows 8,所以这里只拿node在windows下的安装步骤跟大家讲。node的下载地址是:http://nodejs.org/download/
可以看到windows系列有两类安装文件可以使用:exe文件和msi文件。区别是msi需要安装,而且安装后会把相关的执行文件写到系统环境变量,并且
还集成了其它的node插件,比如NPM。
但是当我装完msi文件,再去安装express的时候,就遇到问题了。所以如果大家不想折腾那就跟我一样,下载一个node.exe文件。
2. 在D:\ 创建文件夹NodeJS把下载到的node.exe放到该文件夹下面。纯纯的一个node环境就算装完了,接下来在当前目录下 按住shift并点击鼠标右键,
选择在当前目录下打开命令行工具。
> node -v 输出版本信息,验证安装是否成功。
> node -h 查看帮助,列出了几个简单指令的使用。
试着把 路径 D:\NodeJS写入系统环境变量的path中就可以在任意地方执行node命令了。
3. 安装npm。这个工具应该是个插件的管理工具,后面安装插件时会依赖它,所以要先把它安装好。
下载这个文件:https://github.com/isaacs/npm/zipball/v1.0.104 在D:\NodeJS\下创建npmjs目录,下载的文件解压到npmjs,如下图。
其中有个node_modules文件夹,里面的文件夹都是空的,从 这里 下载一个新的node_modules,替换前面那个。
4. 在 D:\NodeJS\npmjs文件夹下打开命令行工具 执行 >node install npm -gf (当我做这一步时,提醒我版本不对,应该用0.4、0.5、0.6版,
所以我换成了0.6版的node.exe, 这样就安装好nmp了)
执行 >npm -v 查看版本,验证是否成功安装。
5. 安装express。在D:\NodeJS 目录打开cmd,执行 npm install express -g 。注意,安装过程有点长,耐心等待,不要觉得没反应就是失败了。
执行 >express -V 查看版本验证安装是否成功。特别注意这里的V是大写的。
上面的几步大多是借鉴园友 Sean Lv 的 文章 ,但由于照搬操作还是遇到了一些问题,所以重新组织了一下,也顺便加了几个自己发现的问题。
6. 这一步是来安装一个小工具:formidable。我在下面的练习中用到了,所以也在这儿写一下吧。
执行 > npm install formidable 命令完成安装,注意一点:如果使用的Node.exe版本过高会安装失败的,需要0.9及以下版本。
NodeJS入门:
下面开始讲如何入门nodejs,这里我推荐一本在线书籍《Node入门》地址:http://www.nodebeginner.org/index-zh-cn.html其实很多人都会推荐这
本书,写的不错的。但让人很不爽的是好多国内同胞直接粘贴人家的文章到自己的博客里装B。其实我今天晚上刚看完这本书,现在主要是就里面遇到的
问题跟大家分享一下,如果大家不是看这本书来入门的,那下面的内容就可以绕过了。
1. 书中讲到下面这个函数:
function sleep(milliSeconds) { var startTime = new Date().getTime(); while (new Date().getTime() < startTime + milliSeconds); }
其中的 while (new Date().getTime() < startTime + milliSeconds);我有点蒙,while循环还能这样写,是不是代码错了,执行后发现这没问题,只是每
次循环都只判断没操作。
2. server.listen(8888).来监听端口,但是当你多次重复请求操作时会产生冲突,导致node指令报错,这时改一下端口号就行了,我改过8821、8823等。
3. 在做非阻塞处理时有exec("find /",function(error,stdout,stderr){...})。其中的一个参数"find /"指的是linux下的指令当然还有"ls -lah",如果是在
windows下操作的话,这个地方一定报错,可以把它换成"dir"试一下。
4. 在后面那个上传图片的例子中执行var form = new formidable.IncomingForm();时总是执行不通过,后来发现又是版本问题,我下载了1.0版本的
覆盖了之前的,这个地方就能通过了。
5. 同上的例子fs.renameSync(files.upload.path,"/temp/test.png");报错,把renameSync改为rename就好用。真正的原因下面的文章里有讲。
最后,我刚把所有的代码都调出来了,结果从网上查到一篇文章,是专门分析这本书不足之处的。要是早看到该多好啊,哈哈。下面是链接,推荐大家:
http://cnodejs.org/topic/4f348e5ec420ea662d026df2
最后,俺也是刚开始尝试写node,希望跟大家多多交流啊,俺的微博是:http://weibo.com/319111988
--------------------------------------------------------------更新-------------------------------------------------------------
旅行回来重新开始折腾node,发现上面的安装过程已经不好使了,更新新的方式如下:
1. 直接下载msi文件,点击安装后会自带把npm工具也安装上了,在node_modules下面会发现npm文件夹。
2. npm install express -g 安装express工具。
-g的作用是把express安装到全局的环境下,具体的意思就是把express文件夹(内含相关组件)安装在了 用户\AppData\Roaming\npm\node_modules下面,而不是安装在当前目录下面的node_modules下面,这样做的作用是只对命令行操作有好处,无论在哪个目录下打开命令行都能执行express操作。但问题是在具体的express项目中不会自定引入express组件。
3. express -V 查看版本号。
4. express hello 创建一个hello项目。cd hello ; node app.js此时出现错误。原因就是在第2步中所说的问题了,express不会自动导入到具体的项目中,现在的解决方法 1.再安装一遍express这次用npm install express 指令,不加-g。2.直接从用户\AppData\Roaming\npm\node_modules位置把整个express文件夹放到nodejs文件夹下的node_modules中。
5. 有时也会报缺少jade错误,npm install jade即可!
-----------------------------------------继续跟进 2014.3.28-----------------------------------------
NND,msi文件的64位在windows上无法安装了。32bit的一切正常