NodeJS ENOENT проблемы при попытке доступа к существующему каталогу - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь создать интерфейс командной строки NodeJS, который будет использоваться для создания структуры проектов (со всеми необходимыми папками и файлами), копируя их из папки templates в моем главном каталоге, откуда я создаю экземпляр процесса узла.Но, похоже, у меня есть некоторые проблемы с получением правильного пути.У меня есть эта функция, которая должна взять текущий путь к каталогу, где пользователь будет запускать команду из терминала, а затем скопировать туда файлы:

export async function createProject(options) {
  options = {
    ...options,
    targetDirectory: options.targetDirectory || process.cwd()  // CWD -> current working directory
  }

  // ISSUE is probably around here
  const currentFileUrl = import.meta.url;
  const templateDir = path.resolve(
    new URL(currentFileUrl).pathname,
    '../../templates',
    options.template.toLowerCase()
  );
  options.templateDirectory = templateDir;
  console.log(templateDir)
 // ISSUE is probably around here

  try {
    await access(templateDir, fs.constants.R_OK);
  } catch (err) {
    console.log(`%s ${err}`, chalk.bold.red("ERROR"));
    console.log('%s Invalid Template', chalk.bold.red("ERROR"))
    process.exit(1)
  }

  console.log("Copy project files...")
  await copyTemplateFiles(options);

  console.log("%s Project ready", chalk.bold.green("DONE"))
  return true;
}

Я указал, где я думаю проблема исходит, потому что, когда я только консоль регистрирую значение templateDir, он возвращает мне этот путь:

C:\E:\Web%20development\Projects\creator-cli\templates\javascript

с two разделы предварительно привязаны к пути, что, вероятно, приводит к его сбою.Вот ошибка , которую я получаю:

Error: ENOENT: no such file or directory, access 'C:\E:\Web%20development\Projects\creator-cli\templates\javascript'

Я понятия не имею, почему он делает это с C:\E:\.Любая помощь будет оценена :) 1025 *

...