Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Lstat:Type错误:路径必须是字符串。_Javascript_Node.js - Fatal编程技术网

Javascript Lstat:Type错误:路径必须是字符串。

Javascript Lstat:Type错误:路径必须是字符串。,javascript,node.js,Javascript,Node.js,这是我的代码: var http = require('http'); var port = process.env.port || 1337; var fs = require('fs'); var url = require('url'); var current_data_store = __dirname.replace(/\\/g,"/")+"/DATA"; http.createServer(function (req, res) { res.writeHead(200

这是我的代码:


var http = require('http');
var port = process.env.port || 1337;
var fs = require('fs');
var url = require('url');

var current_data_store = __dirname.replace(/\\/g,"/")+"/DATA";

http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });

    this.requiredPath = current_data_store+""+url.format(req.url);
    console.log(this.requiredPath);
    fs.exists(this.requiredPath, function (exists) {
        if(exists){
            if(fs.lstatSync(this.requiredPath).isDirectory()){
                console.log("It's dir");
                //render list of files
            } else if(fs.lstatSync(this.requiredPath).isFile()){
                console.log("It's file");
                //render file
            }
        } else {
            console.log("doesnt exist");
        }
    });

    res.end('Hello World\n'+req.url+'');
}).listen(port);
我想做一个简单的文件浏览器。脚本将显示地址栏中键入的路径中的文件(但仅显示数据文件中的文件)

问题是:节点返回错误:

财政司司长:679 返回binding.lstat(pathModule._makeLong(path)); ^ TypeError:路径必须是字符串 在Object.fs.lstatSync(fs.js:679:18) 在C:\Users\piotr\u 000\Source\Repos\Cloud\Cloud\server.js:15:19 在Object.cb[as oncomplete](fs.js:168:19)
我真的不知道它为什么会出现。fs.exists()函数工作正常,不会抱怨路径不是字符串。

您在
fs.exists()回调中使用的
this
与父范围中的
this
不同。请尝试以下方法:

this.requiredPath = current_data_store+""+url.format(req.url);
console.log(this.requiredPath);
var self = this;
fs.exists(this.requiredPath, function (exists) {
    if(exists){
        if(fs.lstatSync(self.requiredPath).isDirectory()){
            console.log("It's dir");
            //render list of files
        } else if(fs.lstatSync(self.requiredPath).isFile()){
            console.log("It's file");
            //render file
        }
    } else {
        console.log("doesnt exist");
    }
});