Node入門

一、初探Node

1、Node是什麼?

Node是一個後端JS運行平臺,它支持JS在此環境中直接作爲後臺運行。

2、爲什麼要有Node?

我們有了JAVA、.NET、PHP,爲什麼還要這樣一個新的平臺?一方面,Node的後端語言是JavaScript,這樣就與前臺語言一致、簡潔,另一方面,Node在邏輯相對簡單、觸發頻繁的程序上運行效率較高。

二、初窺門徑

怎麼窺,好吧,人家有現成的初級教材,還挺詳細,層層遞進,深入淺出的!

Node入門

其實我今天要講的是針對該教材的,在該書的最後一個上傳圖片的示例,如果照搬代碼,會報錯如下:

  1. fs.js:439  
  2.   return binding.rename(pathModule._makeLong(oldPath),  
  3.                  ^  
  4. Error: ENOENT, no such file or directory 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\013  
  5. f36035eec5259d50bbe4cb4574798'  
  6.     at Object.fs.renameSync (fs.js:439:18)  
  7.     at D:\JS鍜孒TML5\js鏈嶅姟鍣╪ode.js\noderumen\requestHandlers.js:36:12  
  8.     at IncomingForm.parse (D:\JS鍜孒TML5\js鏈嶅姟鍣╪ode.js\node_modules\formida  
  9. ble\lib\incoming_form.js:121:9)  
  10.     at IncomingForm.EventEmitter.emit (events.js:85:17)  
  11.     at IncomingForm._maybeEnd (D:\JS鍜孒TML5\js鏈嶅姟鍣╪ode.js\node_modules\for 
  12. midable\lib\incoming_form.js:383:8)  
  13.     at IncomingForm.handlePart (D:\JS鍜孒TML5\js鏈嶅姟鍣╪ode.js\node_modules\fo  
  14. rmidable\lib\incoming_form.js:212:12)  
  15.     at File.end (D:\JS鍜孒TML5\js鏈嶅姟鍣╪ode.js\node_modules\formidable\lib\fi  
  16. le.js:71:5)  
  17.     at WriteStream.flush (fs.js:1512:9)  
  18.     at Object.oncomplete (fs.js:297:15)  
 
按着錯誤來說,它是找不到圖片的緩存文件,於是到C:\Documents and Settings\Administrator\Local Settings\Temp文件夾下找對應文件,我們找到了,
 
接下來看到有人說可能問題在於
fs.renameSync(files.upload.path, "/tmp/test.png");
該方法本是把C:\Documents and Settings\Administrator\Local Settings\Temp下的對應文件改名爲test.png並放到tmp目錄下而這個tmp必須要建立在nodejs目錄下(我的nodejs目錄在C:\Program Files\nodejs),建立後還是報錯,
 
有人覺得是fs模塊的rename有問題,有沒有問題我不知道,但是在本示例中問題卻不是它,而是路徑"/tmp/test.png",要麼改成"tmp/test.png",要麼改成"./tmp/test.png"
當然讀取文件的路徑也是如此:
fs.readFile("tmp/test.png", "binary", function(error, file)
 
三、其它說法
有人說,在window下運行要注意分盤,必須要在一個盤下,但是我調好後將代碼放到了D盤,nodejs在C盤也照常運行。
 
還有人說要添加如下代碼,其實這個也沒有必要
var form = new formidable.IncomingForm();
form.uploadDir = "tmp";

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章