fix chromium分片截图未导入common (#57)
Co-authored-by: Kokomi <102026640+yoimiya-kokomi@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									b22b70e9e1
								
							
						
					
					
						commit
						85b9d03877
					
				| 
						 | 
					@ -4,6 +4,7 @@ import lodash from 'lodash'
 | 
				
			||||||
import template from 'art-template'
 | 
					import template from 'art-template'
 | 
				
			||||||
import chokidar from 'chokidar'
 | 
					import chokidar from 'chokidar'
 | 
				
			||||||
import cfg from '../config/config.js'
 | 
					import cfg from '../config/config.js'
 | 
				
			||||||
 | 
					import common from '../common/common.js'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const _path = process.cwd()
 | 
					const _path = process.cwd()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,21 +75,21 @@ class Puppeteer {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let connectFlag = false
 | 
					    let connectFlag = false
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      //如果是pm2启动,尝试连接已有实例
 | 
					      // 如果是pm2启动,尝试连接已有实例
 | 
				
			||||||
      if (process.env.pm_id) {
 | 
					      if (process.env.pm_id) {
 | 
				
			||||||
        //获取Mac地址
 | 
					        // 获取Mac地址
 | 
				
			||||||
        if (!mac) {
 | 
					        if (!mac) {
 | 
				
			||||||
          mac = await this.getMac()
 | 
					          mac = await this.getMac()
 | 
				
			||||||
          this.browserMacKey = `Yz:chromium:browserWSEndpoint:${mac}`
 | 
					          this.browserMacKey = `Yz:chromium:browserWSEndpoint:${mac}`
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        //是否有browser实例
 | 
					        // 是否有browser实例
 | 
				
			||||||
        const browserUrl = await redis.get(this.browserMacKey)
 | 
					        const browserUrl = await redis.get(this.browserMacKey)
 | 
				
			||||||
        if (browserUrl) {
 | 
					        if (browserUrl) {
 | 
				
			||||||
          const browserWSEndpoint = await puppeteer.connect({ browserWSEndpoint: browserUrl }).catch((err) => {
 | 
					          const browserWSEndpoint = await puppeteer.connect({ browserWSEndpoint: browserUrl }).catch((err) => {
 | 
				
			||||||
            logger.error('puppeteer Chromium 缓存的实例已关闭')
 | 
					            logger.error('puppeteer Chromium 缓存的实例已关闭')
 | 
				
			||||||
            redis.del(this.browserMacKey)
 | 
					            redis.del(this.browserMacKey)
 | 
				
			||||||
          })
 | 
					          })
 | 
				
			||||||
          //如果有实例,直接使用
 | 
					          // 如果有实例,直接使用
 | 
				
			||||||
          if (browserWSEndpoint) {
 | 
					          if (browserWSEndpoint) {
 | 
				
			||||||
            this.browser = browserWSEndpoint
 | 
					            this.browser = browserWSEndpoint
 | 
				
			||||||
            if (this.browser) {
 | 
					            if (this.browser) {
 | 
				
			||||||
| 
						 | 
					@ -101,9 +102,8 @@ class Puppeteer {
 | 
				
			||||||
      logger.error('puppeteer Chromium 尝试连接已有实例失败')
 | 
					      logger.error('puppeteer Chromium 尝试连接已有实例失败')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!this.browser || !connectFlag) {
 | 
					    if (!this.browser || !connectFlag) {
 | 
				
			||||||
      //如果没有实例,初始化puppeteer
 | 
					      // 如果没有实例,初始化puppeteer
 | 
				
			||||||
      this.browser = await puppeteer.launch(this.config).catch((err, trace) => {
 | 
					      this.browser = await puppeteer.launch(this.config).catch((err, trace) => {
 | 
				
			||||||
        let errMsg = err.toString() + (trace ? trace.toString() : '')
 | 
					        let errMsg = err.toString() + (trace ? trace.toString() : '')
 | 
				
			||||||
        if (typeof err == 'object') {
 | 
					        if (typeof err == 'object') {
 | 
				
			||||||
| 
						 | 
					@ -147,21 +147,21 @@ class Puppeteer {
 | 
				
			||||||
    return this.browser
 | 
					    return this.browser
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //获取Mac地址
 | 
					  // 获取Mac地址
 | 
				
			||||||
  async getMac () {
 | 
					  async getMac () {
 | 
				
			||||||
    //获取Mac地址
 | 
					    // 获取Mac地址
 | 
				
			||||||
    let mac = '00:00:00:00:00:00'
 | 
					    let mac = '00:00:00:00:00:00'
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      const network = os.networkInterfaces()
 | 
					      const network = os.networkInterfaces()
 | 
				
			||||||
      let osMac
 | 
					      let osMac
 | 
				
			||||||
      //判断系统
 | 
					      // 判断系统
 | 
				
			||||||
      if (os.platform() === 'win32') {
 | 
					      if (os.platform() === 'win32') {
 | 
				
			||||||
        //windows下获取mac地址
 | 
					        // windows下获取mac地址
 | 
				
			||||||
        let osMacList = Object.keys(network).map(key => network[key]).flat()
 | 
					        let osMacList = Object.keys(network).map(key => network[key]).flat()
 | 
				
			||||||
        osMacList = osMacList.filter(item => item.family === 'IPv4' && item.mac !== mac)
 | 
					        osMacList = osMacList.filter(item => item.family === 'IPv4' && item.mac !== mac)
 | 
				
			||||||
        osMac = osMacList[0].mac
 | 
					        osMac = osMacList[0].mac
 | 
				
			||||||
      } else if (os.platform() === 'linux') {
 | 
					      } else if (os.platform() === 'linux') {
 | 
				
			||||||
        //linux下获取mac地址
 | 
					        // linux下获取mac地址
 | 
				
			||||||
        osMac = network.eth0.filter(item => item.family === 'IPv4' && item.mac !== mac)[0].mac
 | 
					        osMac = network.eth0.filter(item => item.family === 'IPv4' && item.mac !== mac)[0].mac
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if (osMac) {
 | 
					      if (osMac) {
 | 
				
			||||||
| 
						 | 
					@ -282,19 +282,19 @@ class Puppeteer {
 | 
				
			||||||
          quality: 90
 | 
					          quality: 90
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (i != 1 && i == num) {
 | 
					        if (i !== 1 && i === num) {
 | 
				
			||||||
          await page.setViewport({
 | 
					          await page.setViewport({
 | 
				
			||||||
            width: boundingBox.width,
 | 
					            width: boundingBox.width,
 | 
				
			||||||
            height: parseInt(boundingBox.height) - pageHeight * (num - 1)
 | 
					            height: parseInt(boundingBox.height) - pageHeight * (num - 1)
 | 
				
			||||||
          })
 | 
					          })
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (i != 1 && i <= num) {
 | 
					        if (i !== 1 && i <= num) {
 | 
				
			||||||
          await page.evaluate(() => window.scrollBy(0, 7000))
 | 
					          await page.evaluate(() => window.scrollBy(0, 7000))
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let buff
 | 
					        let buff
 | 
				
			||||||
        if (num == 1) {
 | 
					        if (num === 1) {
 | 
				
			||||||
          buff = await body.screenshot(randData)
 | 
					          buff = await body.screenshot(randData)
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          buff = await page.screenshot(randData)
 | 
					          buff = await page.screenshot(randData)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue