【问题标题】:fs.mkdirSync returns with 'undefined'fs.mkdirSync 返回“未定义”
【发布时间】:2016-07-20 03:31:28
【问题描述】:

我正在尝试创建一个目录并将该目录用作变量以从 zip/rar 文件中提取文件。

导致错误的代码在这里...

   var fileZip = fileName.replace(/^.*[\\\/]/, ''); 
   // Removes full path to get 'file.zip'
   console.log(fileZip);
   var tempFolder = fs.mkdirSync('./app/cache/' + fileZip); 
   // tempFolder Variable for loaded comic
   console.log('CREATE: ' + tempFolder + ' created, line 26');

console.log 返回 CREATE: undefined created, line 26。出了什么问题?该目录是在我想要的位置创建的,但它没有被保存为变量。

是否有可能由于某些文件名包含空格(即file name.zip)而导致问题?

【问题讨论】:

标签: javascript node.js fs


【解决方案1】:

mkdirSync 函数总是返回 undefined。这是它的行为。之后你需要使用另一种机制来确定创建的目录的路径。

【讨论】:

  • 所以,我需要在变量中定义var tempFolder = './app/cache/' + fileZip,然后fs.mkdirSync(tempFolder)?
  • 不完全正确,如果传递给函数的递归选项为假,则结果未定义,或者如果递归为真则创建第一个目录路径
【解决方案2】:

如果你想要一个更轻松的时间,你可以使用模块 mkdirp,它是相同的工具,但是是递归的。

var mkdirp = require('mkdirp');

mkdirp('./your/path', function (err) {
    if (err) console.error(err)
    else console.log('Success!')
});

如果没有错误,您可以假设该路径现在存在

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 2019-11-17
    • 1970-01-01
    • 2016-11-18
    • 2019-12-24
    • 2016-05-15
    • 2017-03-11
    • 2019-07-09
    • 2020-10-02
    相关资源
    最近更新 更多