2016-04-08 91 views
2

我是Node.js的新手,所以我并不熟悉很多东西。 所以基本上我想在当前的工作目录下创建一个目录:如何在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!"); 
}); 

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

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

回答

2

您可以使用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系统上时。

+1

真棒,这正是我想要的,和它的作品...只是一两件事,有一个在代码块中的语法错误。谢谢。 path.join(process.cwd(),'/ tmp/test')只需要一个)在最后... –

-1
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

+0

这是错误的。 '__dirname'将返回放置'main.js'的目录的绝对路径,但不会在其执行的位置。 – p4sh4

+0

我对理解某些概念不太了解,但是我在本地机器上执行了这段代码,并验证它创建了OP所需的目录 –

+0

它只是因为这个文件位于同一目录中的具体示例运行,这是一个边缘案例。从技术上讲,你的答案是错误的。 – p4sh4

相关问题