![](/img/trans.png)
[英]Error: The “path” argument must be of type string. Received undefined. firebase deploy --only functions
[英]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.