簡體   English   中英

Lstat:類型錯誤:路徑必須是字符串。

[英]Lstat: Type error: path must be a string.

這是我的代碼:


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);

我想做一個簡單的文件瀏覽器。 腳本將顯示在地址欄中鍵入的路徑中的文件(但僅顯示DATA文件中的文件)。

問題是:節點返回錯誤:

fs.js:679 return binding.lstat(pathModule._makeLong(path)); ^ TypeError:path必須是Object.cb處C:\\ Users \\ piotr_000 \\ Source \\ Repos \\ Cloud \\ Cloud \\ server.js:15:19處Object.fs.lstatSync(fs.js:679:18)處的字符串[作為未完成](fs.js:168:19)

我真的不知道為什么會出現。 fs.exists()函數可以正常工作,並且不會抱怨路徑不是字符串。

您正在fs.exists()回調中使用this fs.exists()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");
    }
});

暫無
暫無

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

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