求解fs.existSync方法不准确,怎么办? - CNode技术社区

求解fs.existSync方法不准确,怎么办?
发布于 9 年前 作者 Ang-Work 4969 次浏览 来自 问答

今天在写个上传的时候遇到了的问题,用了formidable中间件,这个东西不像multer那样可以自动创建文件夹,所以就想自己写个方法判断一下文件夹是否存在,不存在的话就创建一个。

问题就此出现,先上运行截图: 屏幕快照 2017年05月29日 下午8.27.21.png

截图中可以看到fs.existSync将不存在的目录路径返回了true,期间也尝试了一下用其他方法(比如fs.accessSync,不存在的路径不会抛异常)都不行。。我开始怀疑人生了,是不是我哪里写错了?现在比较懵逼看不出来。。。下面是我的代码:

function mkdirsSync(dirpath) { 
 if (!fs.existsSync(dirpath)) {
 let pathtmp = '';
 dirpath.split(path.sep).forEach(function(dirname) {
 pathtmp = pathtmp ? path.join(pathtmp, dirname) : dirname;
 if(!pathtmp) {
 return;
 }
 console.log(pathtmp);
 if(!fs.existsSync(pathtmp)) {
 try {
 fs.mkdirSync(pathtmp);
 } catch (err) {
 console.log(err);
 }
 } else {
 console.log('Exist path %s', pathtmp);
 }
 });
 }
 return true; 
}
mkdirsSync('Users/nuxio/workspace/express-blog-api/server/public/upload/blog_imgs');

SOS~~~~~~

7 回复

这是这么用的: 屏幕快照 2017年05月30日 23.04.30.png 感觉没毛病

@blackmatch 可能是这个方法在linux下的bug吧。。。我在windows上运行都没问题,在mac上有问题。。提交到travis-ci上运行测试也不通过,╮(╯▽╰)╭

@i5ting 艾特一下大佬,求助这种情况应该怎么办

@Ang-Work mkdirsSync(‘Users/nuxio/workspace/express-blog-api/server/public/upload/blog_imgs’); 这行的路径最前面加一个/试试

@Ang-Work 我是在Mac上运行的

@Fov6363 你指出了关键。。。感谢_(:зゝ∠)_

直接创建文件或文件夹,然后捕获错误来处理

回到顶部

AltStyle によって変換されたページ (->オリジナル) /