Javascript NodeJS-stat不';我不总是跑步
这是我的密码:Javascript NodeJS-stat不';我不总是跑步,javascript,node.js,Javascript,Node.js,这是我的密码: console.log("Path 1: " + fullName); fs.stat(fullName, function(err, stats) { console.log("Path 2: " + fullName); }, function(err) { // I don't know if this part actually does something console.log("An error occurred: " + err); // but I saw
console.log("Path 1: " + fullName);
fs.stat(fullName, function(err, stats) {
console.log("Path 2: " + fullName);
}, function(err) { // I don't know if this part actually does something
console.log("An error occurred: " + err); // but I saw it in a different SO answer
});
有些文件的代码根本不运行。和中一样,我的日志将显示文件的路径1,但不会显示文件的路径2,并且也不会显示任何“发生错误”的情况。我在想这些文件可能有一个无效字符,因为它们都有等号。它们看起来像这样:
...file.device_type=mobile.jsx
即使是这样,为什么没有错误或其他什么?如果是这样,我该如何统计这些文件呢?
根据文档,它不应该有第三个参数功能,您没有记录或检查错误
fs.stat()
只接受两个参数:文件名和回调函数。您正在传递三个参数:文件名和两个单独的回调。所以第二次回调是错误的。然后,在第一次回调中,需要检查err
变量以查看是否发生错误
这是正确的用法:
fs.stat(fullName, function(err, stats) {
if (err) {
console.log("Error in fs.stat(): ", err);
} else {
console.log("Got stats: ", stats);
}
});
如果您使用的是正确的表单,但在控制台中仍然看不到这两条消息,那么我建议在其周围放置一个异常处理程序,以查看是否发生了其他情况:
try {
console.log("about to call fs.stat()");
fs.stat(fullName, function(err, stats) {
if (err) {
console.log("Error in fs.stat(): ", err);
} else {
console.log("Got stats: ", stats);
}
});
} catch(e) {
console.log("fs.stat() exception: ", e);
}
在查看时,有几种方法可以引发同步异常,特别是当它检测到传递给它的无效参数时。与往常一样,node.js文档没有描述这种行为,但您可以在代码中看到它。这是fs.stat()
的代码:
makeStatsCallback()
和handleError()
都会引发异常(当您在同一个文件中查看它们的实现时)
我不知道您是从哪里得到将两个回调传递给
fs.stat()
的想法的。如文档所述,它不接受两个回调函数。它看起来很像fs
库的预期版本,其中每个异步操作都返回一个承诺,然后您可以将两个回调传递给fs.statPromise.then(fn1,fn2)
,但我不知道您是否看到了这一点。您能澄清一下吗?我不确定您告诉我要更改什么。fs.stat(fullName,function(err,stats){console.log(“路径2:+fullName);});添加了有关fs.stat()
如何引发异常的更多信息。
fs.stat = function(path, callback) {
callback = makeStatsCallback(callback);
if (handleError((path = getPathFromURL(path)), callback))
return;
if (!nullCheck(path, callback)) return;
var req = new FSReqWrap();
req.oncomplete = callback;
binding.stat(pathModule._makeLong(path), req);
};