Узел асинхронный mkdir с полным путем

1

В настоящее время я использую shell.js mkdir -p в моем узле node.js, который является синхронным. "-p" используется в shell.mkdir для создания каталога с полным путем, чего не может сделать fs.mkdir.

if(fs.existsSync(archivePath + "\\" + site + "\\" + year)){ // check if site folder exists
    console.log(archivePath + "\\" + site + "\\" + year + " exists");
}
else {
    console.log(archivePath + "\\" + site + "\\" + year + " does not exist... creating full path now");
    shell.mkdir('-p' , archivePath + "\\" + site + "\\" + year + "\\" + missionID);
}

Если кто-то знает способ получить асинхронный характер fs.mkdir и рекурсивный характер shell.mkdir('-p', absolutePath), одним махом, пожалуйста, дайте мне знать.

  • 0
    Я не уверен, что вы пытаетесь сделать 1) заменить shell.mkdir на fs.mkdir + wrapper 2) сделать shell.mkdir async 3) что-то еще?
  • 0
    Достаточно любого из вышеперечисленных вариантов, если я могу отключить основные функции.
Теги:
asynchronous
fs
shelljs

2 ответа

0
Лучший ответ

Поэтому я понял, что могу просто использовать mkdirp для создания каталога с полным путем через обещание.
См. Полную документацию здесь

0

Вы можете попробовать использовать модуль узла commandir:

mkdir и rmdir, которые просто работают

  • Функции idempotent, поэтому вы не получите ошибку для попытки создать каталог, который уже существует или пытается удалить тот, который этого не делает.
  • mkdir создает промежуточные каталоги, поэтому вам не нужно!
  • mkdir и rmdir всегда будут сообщать вам, какие каталоги были созданы или удалены, поэтому ваша программа может очистить после себя, если она будет отменена позже при ее выполнении. Это делается особенно легко благодаря тому, что обе функции совместно используют согласованный API, позволяющий передавать выходные данные одного в качестве входа в другой!

устанавливать

npm
npm install --save commandir
пряжа
yarn add commandir

См. Документацию для полных инструкций по использованию.

Отказ от ответственности: я автор командира

  • 0
    Спасибо за ответ, однако, когда я попробовал его в своем коде, я продолжал получать сообщение об ошибке: C: \ Foldername \ node_modules \ commandir \ src \ mkdir \ index.js: 8 асинхронная функция mkdir (... args) с ^^^ ^^^^^ под "функцией". Я считаю, что это проблема с вашей стороны, потому что после запуска вашего примера кода я также получил ошибку
  • 0
    @HarounAnsari Спасибо за отзыв! Ошибка возникает из-за того, что Commandir использует асинхронные функции, которые не поддерживаются более старыми версиями узла. Я рад, что вы смогли решить вашу проблему с помощью mkdirp. Если вы обнаружите, что предпочитаете mkdir который возвращает обещание вместо того, чтобы требовать обратного вызова, и можете обновить его до последней версии узла, я рекомендую вам еще раз попробовать Commandir. Удачи!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню