Приложение работает менее 24 часов и всегда выдает ошибку - PullRequest
0 голосов
/ 10 октября 2019

Это приложение для отображения последних 250 заказов каждые 20 минут от Shopify до листов Google. (Ubuntu, узел JS, цифровой океан)

const {google} = require('googleapis');
const keys = require('./keys.json');
const Shopify = require('shopify-api-node');
const client = new google.auth.JWT(
    keys.client_email,
    null,
    keys.private_key,
    ['https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive.metadata.readonly']
);
const shopify = new Shopify({
  shopName: 'shopname.myshopify.com',
  apiKey: 'key',
  password: 'pas'
});
const sheets = google.sheets({version: 'v4', auth: client});
const drive = google.drive({version: 'v3', auth: client});

let links = [];

async function runDrive(ord, sku){
    const resDrive = await drive.files.list({
    pageSize: 1,
    q: sku,
    spaces: 'drive',
    });
    const files = resDrive.data.files;
    let link;
    if (files.length) {
      link = `https://drive.google.com/file/d/${files[0].id}/view`;
    } else {
      link = 'No files found.';
    }
    console.log([ord, sku, link])
    links.push([ord, sku, link])
}

async function gsrun(){
  links = [];
  
  // Shopify - Get orders list
  let orders = await shopify.order.list({ limit: 250 });

  for (const ord of orders){
    for(const item of ord.line_items){
      await runDrive(ord.order_number, item.sku)
    }
  }

  // Sheets - Update cells
  const clearRange = {
    spreadsheetId: 'spreadsheetId',
    range: 'Data!A3:G700'
  }
  const updateData = {
      spreadsheetId: 'spreadsheetId',
      range: 'Data!A3',
      valueInputOption: 'USER_ENTERED',
      resource: { values: links},
  };
  await sheets.spreadsheets.values.clear(clearRange);
  console.log('Sheet cleaned')
  await sheets.spreadsheets.values.update(updateData);
  console.log('Sheet updated')

  setTimeout(()=> {
    console.log('repeat');
    gsrun();
  }, 1200000);
}

gsrun();

Работает менее двадцати четырех часов и всегда выдает эту ошибку: node js error Это мое первое приложение. Как это исправить? Должен ли я запустить скрипт где-нибудь снаружи? Заранее спасибо.

1 Ответ

0 голосов
/ 14 октября 2019

После упаковки в try / catch он работает без прерываний.

...