Node.js программа не заканчивается

#node.js #puppeteer #sharp

#node.js #кукольник #острый

Вопрос:

Я написал node.js программа, и она не заканчивается после того, как все сделано.

Я перепробовал все.

Ниже приведен мой код :

 const log = require('why-is-node-running') // should be your first require const net = require('net')  const puppeteer = require('puppeteer');  //const sharp = require("sharp");  const sharp = require("sharp");   async function tkscr() {  const browser = await puppeteer.launch();  const page = await browser.newPage();   // set the size of the viewport, so our screenshot will have the desired size  await page.setViewport({  width: 1920,  height: 1080 })    await page.goto('https://www.google.com/', {waitUntil: 'load', timeout: 0});  await page.screenshot({ path: 'gg.jpeg' ,fullPage: true});   await browser.close();    }  tkscr().then(  res =gt; cropImage())  .catch(err =gt; console.log(err));    function cropImage() {  try {  sharp("gg.jpeg")  .extract({ width: 770, height: 388, left: 552, top: 770 })  .toFile("sammy.jpeg", function(err) {  console.log("process completed");  setTimeout(function () {  log() // logs out active handles that are keeping node running  }, 100)  });  } catch (error) {  console.log(error);  }  }   

это приложение делает снимок экрана с помощью puppeteer, а затем использует sharp для обрезки снимка экрана

Я использую «почему работает узел»

У меня есть журнал ниже:

введите описание изображения здесь

Я не знаю, что мне делать? пожалуйста, помогите мне

Спасибо

Комментарии:

1. При удалении setTimeout с log помощью программы для меня все просто отлично заканчивается..

Ответ №1:

Когда я тестирую программу, она заканчивается правильно. Удалите log() его, и он просто остановится, как и ожидалось..

 const log = require('why-is-node-running') // should be your first require const net = require('net')  const puppeteer = require('puppeteer');  //const sharp = require("sharp");  const sharp = require("sharp");  async function tkscr() {  const browser = await puppeteer.launch({});  const page = await browser.newPage();   // set the size of the viewport, so our screenshot will have the desired size  await page.setViewport({  width: 1920,  height: 1080  })    await page.goto('https://www.google.com/', { waitUntil: 'load', timeout: 0 });  await page.screenshot({ path: 'gg.jpeg', fullPage: true });  await browser.close();   }  tkscr().then(  res =gt; cropImage())  .catch(err =gt; console.log('catch err:', err));  async function cropImage() {  try {  sharp("gg.jpeg")  .extract({ width: 770, height: 388, left: 552, top: 770 })  .toFile("sammy.jpeg", function (err) {  console.log('everything done.')  })  } catch (error) {  console.log(error);  } }  

why-is-node-running Модуль показывает мертвые дескрипторы, которые, возможно, еще не были «собраны» с тех пор, как узел решил сделать это позже, так что это более запутанно, чем что-то другое в этом сценарии.