Я пытаюсь использовать 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;
}