【发布时间】:2021-09-09 03:18:37
【问题描述】:
我在下面有这个小代码,它会转到 IMDB 网站来抓取电影标题。该代码实际上可以与小的 catch 一起正常工作,以进行基本的错误处理。
app.get("/", function(err, req, res){
function handleError(err) {
console.log('Ohhhh nooo');
console.log(err.message);
}
(async ()=>{
let movieURL= "https://www.ximdb.com/title/tt1375666/?ref_=hm_tpks_tt_i_1_pd_tp1_cp";
let browser = await puppeteer.launch();
let page = await browser.newPage();
await page.goto(movieURL, {waitUntil: "networkidle2"});
const movieData = await page.evaluate(() => {
let movieTitle = document.querySelector('div[class="TitleBlock__TitleContainer-sc-1nlhx7j-1 jxsVNt"] > h1').innerText;
let movieRating = document.querySelector('span[class="AggregateRatingButton__RatingScore-sc-1ll29m0-1 iTLWoV"]').innerText;
return{movieTitle, movieRating}
});
res.render("index2", {movieData});
console.log(movieData);
await browser.close();
return;
})()
.catch(handleError);
});
我故意将 IMDB 更改为“ximdb”以防出错。当我启动此脚本时,控制台会记录错误消息。然而,
- 浏览器上的加载标志不会停止。发生错误时如何停止脚本/加载?
- 我希望在发生错误时更改浏览器上的页面。下面的这段代码是我想要做的,但它不起作用并且给出了错误(
(node:696) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'render' of undefined)。
function handleError(err, res) {
console.log('Ohhhh nooo');
console.log(err.message);
res.render("index2");
}
【问题讨论】:
-
代码会产生什么错误...? “不起作用”是一个无用的问题描述。
-
请在您的问题中包含错误。
标签: javascript node.js express async-await puppeteer