#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}
в качестве второго аргумента автоматически создаст родительские каталоги и уменьшит потребность в вашей функции