1 测试
const fs = require('fs');
fs.mkdir('./study/node/files ', (err) => {
    if (err) throw err;
    console.log("mkdir success");
  });

则会直接抛出错误:

 
 
if (err) throw err;             ^
Error: ENOENT: no such file or directory, mkdir 'C:\Users\ha.ha\Desktop\sample\test\study\node\files '

 

 
2 Node 10.14.1 版本及以上
而Nodejs 10 原生支持递归创建目录,添加该参数即可:
 
fs.mkdir(path [,options],callback)
path <string> | <Buffer> | <URL>
options <Object> | <integer>
recursive <boolean> Default: false
mode <integer> Not supported on Windows. Default: 0o777.
callback <Function>

 

第一个参数为路径,第二个参数为是否递归创建和权限参数.第二个参数中recursive设置为true即支持递归创建。
 
const fs = require('fs');
fs.mkdir('./study/node/files', {recursive: true}, (err) => {
    if (err) throw err;
});

 

 
以上代码在10.14.1上测试可用
Node mkdir API文档:https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_mkdir_path_options_callback
 
3 Node低版本方案
var fs = require("fs");  
var path = require("path");  
  
function mkdirs(dirname, callback) {  
    fs.exists(dirname, function (exists) {  
        if (exists) {  
            callback();  
        } else {  
            //console.log(path.dirname(dirname));  
            mkdirs(path.dirname(dirname), function () {  
                fs.mkdir(dirname, callback);  
            });  
        }  
    });  
} 

mkdirs('./hello/world/teset', function(err){
    if (err) throw err;
});

Nodejs 递归创建路径

学完还想练练?点这里