Загрузка в облачное хранилище Google не удалась с помощью ApiError - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть облачная функция, которая загружает CSV-файлы в облачное хранилище.

Через некоторое время происходит сбой API со следующей ошибкой.Похоже, что это сбой при HTTP-вызове после повторных попыток, но не указано, в чем проблема.

Если я загружаю 6 файлов, обычно 3-4 успешно завершаются, а остальные выдают эту ошибку после некоторыхвремя.

Кто-нибудь сталкивался с подобной проблемой?

Error: Cannot parse JSON response
    at ApiError (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:43:9)
    at Util.parseHttpRespBody (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:185:42)
    at Util.handleResp (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:134:117)
    at retryRequest (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:422:22)
    at onResponse (/user_code/node_modules/@google-cloud/storage/node_modules/retry-request/index.js:200:7)
    at /user_code/node_modules/@google-cloud/storage/node_modules/teeny-request/build/src/index.js:158:17
    at process._tickDomainCallback (internal/process/next_tick.js:135:7) message: 'Cannot parse JSON response'

Я использую версию 2.4.3 библиотеки @ google-cloud / storage nodejs.

Попытался обновить версию облачного хранилища с 1.x до 2.4.2 и теперь 2.4.3.

Попытка добавления имени корзины с помощью gs: //

Имя корзины не содержит имени файла, и это не ошибка.

Вот суть моего кода.

promises.push(Promise.all([

                filesysRef
                .outputFile(tmpFilePath, values.join('\n'))
                .then(() =>
                  gcs.bucket(bucketName).upload(tmpFilePath, { destination: filePath } )),

                filesysRef
                .outputFile(tmpItemFilePath, items.join('\n'))
                .then(() => gcs.bucket(bucketName)
                .upload(tmpItemFilePath, { destination: itemFilePath }
                )),

              ])
              .then(() => {
                gcs.bucket(bucketName).file(itemFilePath).exists()
                .then(() => { hour.ref.remove().then(() => console.log('done removeal'));
                          console.log("after removal")}) // THIS DELETES FROM FIREBASE
                .catch(() => console.log("File not found in GCS, hence hour not archived"))
              }, err => console.log(err))
              .catch(error => {

                console.log(error)
              })

              .then(() => filesysRef.unlinkSync(tmpItemFilePath))
              .catch(err => console.log(err))

              .then(() => filesysRef.unlinkSync(tmpOrderFilePath))
              .catch(err => console.log(err))
            );

Функция в конечном итоге возвращает Promise.all([promises]).

Ожидается успешное выполнение функции облака и загрузка файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...