关于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";