AWS Лямбда / Хром - определенная функция «не определена» во время оценки - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь использовать Chromium Binary for AWS для очистки содержимого с веб-сайта и помещения в DynamoDB.

Ниже приведена функция в AWS Lambda и, несмотря на определение функции getTS чтобы вычислить атрибут timestamp, я получаю сообщение об ошибке "Evaluation failed: ReferenceError: getTS is not defined"

Как функция не определена?

'use strict'
const chromium = require('chrome-aws-lambda');
const AWS = require('aws-sdk');

function getTS(month,day) {
  var fullDate = `${month}/${day}/2020`;
  var ts = new Date(fullDate).getTime()
  return ts-9*3600;
}

exports.handler = async (event, context) => {
  const documentClient = new AWS.DynamoDB.DocumentClient();
  let responseBody = '';
  let statusCode = 0;

  let result = null;
  let browser = null;

  try {
    browser = await chromium.puppeteer.launch({
      args: chromium.args,
      defaultViewport: chromium.defaultViewport,
      executablePath: await chromium.executablePath,
      headless: chromium.headless,
    });

    let page = await browser.newPage();

    await page.goto('SOME_URL');
    var res = await page.evaluate( () => {
      let results = [];
      let patients = document.querySelector('tbody').querySelectorAll('tr');
      patients.forEach( patient => {
        let formatDate = patient.querySelectorAll('td')[6].innerText.split('.')
        let fullDate = `${formatDate[0]}, ${formatDate[1]}`
        let timestamp = getTS(formatDate[0],formatDate[1])
        results.push({
          FullDate: fullDate,
          Timestamp: timestamp,
        });
      });
      return results;
    });
  } catch (error) {
    return context.fail(error)
  } finally {
    if (browser !== null) {
      await browser.close()
    }
  }

  let i;
  for (i=0; i<res.length; i++) {
    const params = {
      TableName: 'Items',
      Item: res[i]
    }
    try {
        const data = await documentClient.put(params).promise();
        responseBody = JSON.stringify(data);
        statusCode = 201;
    } catch (err) {
        responseBody = `Unable to put item: ${err}`;
        statusCode = 403;
    }
  }

  const response = {
    statusCode: statusCode,
    headers: {
      'Content-Type': 'application/json'
    },
    body: responseBody
  }

  return response;
}    
...