我的node.js简单web服务器没有'无法访问父文件夹

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

本文关键字:访问 文件夹 js node 简单 web 服务器 我的      更新时间:2023-09-26

昨天我玩了一点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在子目录bar中,
如果运行node bar/server.js,那么..将指向foo的父级,而不是bar的父级。这就是为什么找不到文件的原因。

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

您可以尝试将cd转换为bar并运行node server.js

或者将脚本中的CCD_ 10更改为CCD_。

PS:您可以使用path.resolve来获得绝对路径。