簡體   English   中英

我的node.js簡單Web服務器無法訪問父文件夾

[英]My node.js simple web server doesn't access parent folder

昨天我在Node.js上做了一些嘗試,我的第一個想法是制作一個簡單的Web服務器,該服務器以這種方式加載帶有一些js文件的html頁面:

var http = require('http'),
    fs = require('fs'),
    path = require('path');

http.createServer(function(request, response) {
    console.log('request starting for: ' + request.url);
    var filePath = path.join('.', request.url);
    if (filePath === './') {
        filePath = './aPage.html';
    }

    path.exists(filePath, function(exists) {
        if (exists) {
            var extname = path.extname(filePath);
            var contentType = 'text/html';
            switch (extname) {
            case '.js':
                contentType = 'text/javascript';
                break;
            case '.css':
                contentType = 'text/css';
                break;
            }

            fs.readFile(filePath, function(error, content) {
                if (error) {
                    response.writeHead(500);
                    response.end();
                }
                else {
                    response.writeHead(200, {
                        'Content-Type': contentType
                    });
                    response.end(content, 'utf-8');
                }
            });
        }
        else {
            console.log('Something goes wrong ;(');
            response.writeHead(404);
            response.end();
        }
    });
    console.log('Server running!');
}).listen('8080', '0.0.0.0');

一切正常。

我決定將此js腳本放在一個子目錄中,修改以下行:


...

var filePath = path.join('..', request.url);
    if (filePath === '../') {
        filePath = '../aPage.html';
    }
...

但是path.exists()無法檢查html頁面和其他文件的存在。

你能告訴我我的錯嗎(我以為那只是微不足道的改變)?

謝謝。

我的猜測是您正在嘗試直接從父文件夾而不是子目錄運行js腳本。

例如:如果您位於foo目錄中,而server.js位於subdir bar
然后,如果您運行node bar/server.js ,則..將指向foo的父級,而不是bar的父級,這就是為什么找不到該文件的原因。

foo
  +---bar
  |     +----- server.js
  +---- aPage.html

您可以嘗試cdbar和運行node server.js

或將腳本中的../aPage.html更改為__dirname/../aPage.html

PS:您可以使用path.resolve獲取絕對路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM