Конвейер CICD с Codebuild не позволяет приложению Node JS создавать новый каталог в тестах

#node.js #aws-codepipeline #aws-codebuild

Вопрос:

Я создаю приложение Node JS. Я создаю конвейер CICD для своего приложения, используя AWS Codepipeline и AWS Codebuild, интегрируя их вместе.

Но теперь у меня возникла проблема с запуском тестов, которые включают создание нового каталога или файла, потому что приложение не создает новый каталог или файл в сборке кода, так как тесты выполняются в сборке кода. Мои тесты вызывают следующую функцию для создания новых каталогов.

 const createDirectoryForFileIfNotExists = (directory) => {
  if (! directory) {
    return;
  }
  let segments = directory.split("/");
  if (segments.length < 1) {
    return;
  }
  let checkDirectory = "";
  for (let i= 0; i < segments.length; i  ) {
    if (checkDirectory == "") {
      checkDirectory = segments[i];
    } else {
      checkDirectory = checkDirectory   "/"   segments[i];
    }

    if (!fs.existsSync(checkDirectory)) {
      fs.mkdirSync(checkDirectory);
    }
  }
}
 

Но когда тесты выполняются в сборке кода, я получаю следующую ошибку.

 ENOENT: no such file or directory, mkdir
 

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

 /codebuild/output/src120020864/src/test_storage/payment-proof
 

Как я могу устранить эту проблему?

Комментарии:

1. Это не решит вашу проблему, но передача {recurse: true} в качестве второго аргумента автоматически создаст родительские каталоги и уменьшит потребность в вашей функции