【发布时间】:2024-04-19 20:05:02
【问题描述】:
我对 NodeJS 还很陌生,我正在努力弄清楚这里发生了什么以及为什么我会收到错误:“SyntaxError: await is only valid in async function” for await doScrape(results[i].productUrl);
我查看了其他示例,但仍然无法发现问题所在。非常感谢任何帮助。谢谢。
const mysql = require('mysql');
const axios = require('axios');
async function doScrape(url) {
try {
console.log('scraping');
const response = await axios.get('https://###########.com/dev?url=' + url);
console.log(response.status);
console.log(response);
} catch (error) {
console.error(error);
}
}
module.exports.dailyScraperScheduler = async (event) => {
var con = mysql.createConnection({
host: "#####",
user: "#####",
password: "#####",
database: "####"
});
let sql = 'SELECT productUrl FROM ######### ppw INNER JOIN products \
p ON p.productId = ppw.productId WHERE IFNULL(ppw.lastUpdated,CURDATE() \
- INTERVAL 1 DAY) < CURDATE()'
let getProducts = async (sql, params,results) => {
return new Promise((resolve, reject) => {
con.connect((err, connection) => {
con.query(sql, params, (err, results) => {
if (err){
reject(err);
}
resolve(results);
});
});
});
};
await getProducts(sql)
.then(function (results) {
for (var i = 0; i < results.length; i++) {
console.log(results[i].productUrl);
await doScrape(results[i].productUrl);
};
});
};
【问题讨论】:
-
等待doScrape(results[i].productUrl);必须在异步函数中调用
标签: node.js aws-lambda async-await