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

Смежные вопросы