当前位置: 代码迷 >> Web前端 >> 关于Node 入门学习遇到的有关问题
  详细解决方案

关于Node 入门学习遇到的有关问题

热度:276   发布时间:2013-10-12 11:54:04.0
关于Node 入门学习遇到的问题
1,安装node-v0.10.18-x86 后命令行下输入node -v 提示没有该命令
解决:重启电脑 ok

2, 安装npm 管理包

    2.1. 下载npm源代码:https://github.com/isaacs/npm/tags

这里需要注意一下,在写这篇文章时npm最新版本为1.0.106,但是这个最新版本及1.0.105在Windows平台下都有问题。所以我选择了安装1.0.104版本:
https://github.com/isaacs/npm/zipball/v1.0.104


    2.2. 将npm源代码解压到D:\npmjs目录中。
在命令提示符窗口中执行下面的操作,完成npm的安装:

D:\>cd npmjs
D:\npmjs>node cli.js install -gf

另外:
node cli.js install npm -gf //可以安装最新版的NPM
node cli.js install npm@1.0.105 -gf //可以安装指定版本的NPM
上面两种方法都是通过网络从代码库中下载并安装,但是代码库一般只保留最近的两个版本。

    2.3. NPM安装完成后,将"D:\nodejs\node_modules"加入系统环境变量NODE_PATH中。

    2.4. 安装express:
npm install express -g //安装最新版express
npm install express@2.5.0 //安装指定版本express

npm remove express -g //删除express

3,退出当前运行的程序 ctrl+c  是linux命令中断当前的命令。


4,关于 var exec = require("child_process").exec;

exec 调用的是系统命令,node beginner 是在linux 环境中的所以,调用的命令有所不同
其对应关系
linux     window
find /    dir C:\ /s /b | find "CPU"
ls -lah   ls -lah   列出目录下的文件相关详情


5,关于querystring

var querystrinng = require("querystring");

querystring.parse(postdata).text   //一直以为text是querystring的属性呢,
其实是提交表单中 表单input name 的值,

因为textarea 的name 不是原来的text 改成了adress,所以得到的值一直是undefined的


6,/show 图片的时候遇到的问题
    6.1,忘了在index.js handler数组中添加相应的对应关系
    6.2,图片路径问题 fs.readFile("/temp/mi3.jpg","binary" 以为直接可以读到图片的,结果提示:Error: ENOENT, open 'D:\temp\mi3.jpg' 

        看来直接是根路径下了,恰好这几天看linux的东西,所以修改文件路径:"./temp/mi3.jpg"
前面加了个点.  linux下面 . 代表当前路径,..代表父路径/上级路径。

    6.3,文中是.png 图片对应 Content-Type:image/png  .jpg 图片对应 Content-Type:image/jpeg

7,上传图片的例子

    7.1,为了避免和以前的例子冲突,所以start ,upload ,的处理函数都加了_f 变成了start_f  ,upload_f

        结果在upload_f() 中报错:files.upload.path 中path undefined 
        后面通过输出 sys.inspect({fields: fields, files: files})中的信息到页面显示
        才发现file.upload.path 中的 upload 是请求的路径 所以要改成 upload_f

    7.2,  错误:return binding.rename(pathModule._makeLong(oldPath),   path路径为空造成的


    7.3,Error: EXDEV, cross-device link not permitted  文件操作权限问题
参考:http://cnodejs.org/topic/4f2b9a04aa8e490b110bfae2#5236ea19101e5745217423cf
  三楼正解: form.uploadDir ="temp";
  相关解决方案