我試圖建立一個基本的靜態Web服務器,很簡單的一個,幾行字,處理3名的請求,圖標的路徑規則,JS和html文件:什麼的NodeJS
項目struture:
在server.js-D:
-project
-build
-index.html
-fav.icon
-dist.js
-server.js
代碼
http.createServer(function(req, res) {
//create dynamic filepath for response via requests MIME type
let filePath = './build' + req.url;
fs.access(filePath, callback(err){
console.log(err);
res.writeHead(200, {'Content-Type': contentType});
let file = fs.createReadStream(__dirname + filePath);
file.pipe(res);
});
});
奇怪的是,文件路徑,昨晚的工作我記得,但我不知道發生了什麼事或什麼,我已經改變了,它不工作了。所以我試圖調試它,現在控制檯會顯示:
'no such file...D:\project.\build\'
有一個'。'之前「\建設」那裏,所以我試圖刪除此:
let filePath = '/build' + req.url;
然後它會顯示
'no such file...D:\build\'
哪裏是「項目」目錄?再次,去掉 '/' brfore '構建':
let filePath = 'build' + req.url;
'項目' 回來:
'no such file...D:\projectbuild\'
我試圖用path.resolve(__目錄名稱,絕對路徑)和path.join(__目錄名,相對路徑),他們都返回相同的。
我不知道爲什麼我昨晚可以訪問我的服務器,但不是今天,我記得在某處我看到一個鏈接到'節點文件路徑規則'或'節點文件訪問規則'類似的東西,我GOOGLE了它試圖在節點文檔中搜索,但沒有運氣,那麼在Node中訪問路徑的規則是什麼?
謝謝你的答案,它的工作原理,所以爲了進一步的用法,你能告訴我'/ build'和'./build'是什麼意思,我想了解更多關於Node文件訪問路徑規則。 –
對於那些東西,節點只遵循Unix路徑標準。因此,以斜槓開始的路徑意味着「從根目錄開始」。在Windows上,/ build會因此表示D:\ build,如果您在D驅動器中。從一個點開始,斜槓意味着「從當前目錄開始」。因此,如果您在D:\ projects中並且您說./build,則路徑將爲D:\ projects \ build。您可以通過進入Node REPL和調用路徑來使用它。解析()你想要嘗試的任何字符串路徑片段。 – Paul