【问题标题】:Node.js program not endingNode.js 程序没有结束
【发布时间】:2021-12-06 01:18:26
【问题描述】:

我写了一个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 => cropImage())
  .catch(err => 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 截取屏幕截图,然后使用锐利截取屏幕截图

我使用“为什么节点正在运行”

我得到了下面的日志:

我不知道该怎么办?请帮帮我

谢谢

【问题讨论】:

  • 当用log 删除setTimeout 时,程序对我来说非常完美..

标签: node.js puppeteer sharp


【解决方案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 => cropImage())
    .catch(err => 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 模块显示了可能尚未“垃圾收集”的死句柄,因为节点决定稍后再做,所以它比这个脚本中的其他内容更令人困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2018-12-01
    相关资源
    最近更新 更多