NodeJS-fs.exists()引发错误,但是文件在那里?

时间:2018-11-22 07:52:24

标签: javascript node.js fs

我尝试检查服务器上是否存在文件(例如css文件):

// parse url and extract URL path
var pathname = url.parse(req.url).pathname;  


fs.exists(pathname, function (exist) {

    // if the file is not found, return 404
    if(!exist) {  
        console.log('NOT EXISTING: '+pathname);
        res.statusCode = 404;
        res.end(`File ${pathname} not found!`);
        return;
    }

..... blah blah 
}

文件在那里,但输出为: NOT EXISTING: /assets/css/bootstrap.min.css

我在做什么错?

2 个答案:

答案 0 :(得分:0)

尝试在您的路径前添加__dirname

var pathname = url.parse(req.url).pathname;

fs.exists(__dirname + pathname, function (exist) {

    // if the file is not found, return 404
    if(!exist) {  
        console.log('NOT EXISTING: '+pathname);
        res.statusCode = 404;
        res.end(`File ${pathname} not found!`);
        return;
    }

..... blah blah 
}

当路径以/开头时,NodeJS将从操作系统的根目录开始查找文件。通过提供__dirname,您可以告诉NodeJS从当前目录中搜索。

答案 1 :(得分:0)

使用 __ dirname path.join(URL)创建绝对路径:

path.join(__dirname, url)