【问题标题】:How to create a directory in the current directory in Node.js如何在 Node.js 的当前目录中创建目录
【发布时间】:2016-07-29 05:30:42
【问题描述】:

我是 Node.js 的新手,所以我对很多东西都不熟悉。 所以基本上我想在当前工作目录中创建一个目录:

 var mkdirp = require('mkdirp');
 console.log("Going to create directory /tmp/test");
 mkdirp('/tmp/test',function(err){
       if (err) {
           return console.error(err);
        }
console.log("Directory created successfully!");
});

我的当前目录在 Windows 上是 C:\Users\Owner\Desktop\Tutorials\NodeJS,这意味着我在该目录中运行 node main.js。 (main.js 在C:\Users\Owner\Desktop\Tutorials\NodeJS) 在我运行代码后,它会生成 C:\tmp\test,它位于 C:\ 中。 但是我想在当前目录下创建,所以我想要的结果是C:\Users\Owner\Desktop\Tutorials\NodeJS\tmp\test

我只是不知道该怎么做......

【问题讨论】:

    标签: node.js mkdir


    【解决方案1】:

    您可以使用process.cwd() 输出执行命令的目录(在您的情况下,是运行node main.js 的目录),因此您的代码可能如下所示:

    var mkdirp = require('mkdirp');
    var path = require('path');
    
    console.log("Going to create directory /tmp/test");
    mkdirp(path.join(process.cwd(), '/tmp/test'), function(err){
      if (err) {
        return console.error(err);
      }
      console.log("Directory created successfully!");
    });
    

    如果您只需要main.js 文件所在的目录而不是执行它的位置(通过调用node main.js),您可以使用__dirname 变量而不是process.cwd()

    使用path.join() 函数来确保路径分隔符设置正确是个好主意,尤其是当您使用的Windows 系统可能将正斜杠视为选项时。

    【讨论】:

    • 太棒了,这正是我想要的,而且它有效......只是一件事,代码块中有语法错误。谢谢。 path.join(process.cwd(), '/tmp/test') 最后只需要一个)...
    【解决方案2】:
    var mkdirp = require('mkdirp');
    var path = require('path');
    console.log("Going to create directory /tmp/test");
    mkdirp(path.join(__dirname, '/tmp/test'),function(err){
        if (err) {
            return console.error(err);
        }
        console.log("Directory created successfully!");
    });
    

    您可以使用path.join(__dirname, '/tmp/test'),其中__dirname 将返回The name of the directory that the currently executing script resides in.

    您需要包含模块“路径”才能使path.join() 工作。

    参考

    __dirname

    【讨论】:

    • 这是错误的。 __dirname 将返回main.js 所在目录的绝对路径,但不会返回它的执行位置。
    • 我对某些概念的理解不好,但我在本地机器上执行了这段代码并验证了它是否按照 OP 的需要创建了目录
    • 它这样做只是因为这个特定的例子,文件位于与运行相同的目录中,这是一个边缘情况。从技术上讲,您的答案是错误的。
    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2011-07-30
    • 2014-02-07
    • 2018-01-16
    • 2010-10-20
    相关资源
    最近更新 更多