2016-04-08 84 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

相關問題