You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu部署Puppeteer报'_launcher' undefined错误如何排查

Puppeteer Ubuntu部署报错排查思路

核心错误原因指向

你遇到的Cannot read properties of undefined (reading '_launcher')错误,本质是launch方法执行时内部上下文丢失,而非系统依赖缺失,按以下优先级排查:

  • 第一步:修正Puppeteer导入与调用方式
    绝大多数该报错均由错误的导入写法导致,禁止直接解构launch方法调用,必须从puppeteer实例下调用方法:
    // 正确导入写法(ESModule)
    import puppeteer from 'puppeteer'
    // 正确导入写法(CommonJS)
    const puppeteer = require('puppeteer')
    
    // 调用时必须写全puppeteer.launch,不可直接用解构出来的launch
    this.puppeteerBrowser = await puppeteer.launch({ 
      headless: true, 
      args: ['--no-sandbox', '--disable-setuid-sandbox'] 
    });
    
  • 第二步:清理环境重新安装依赖
    Windows环境安装的Puppeteer携带的是Win平台的Chromium二进制,直接同步到Ubuntu会不兼容,按以下操作重置依赖:
    1. 删除服务器项目目录下的node_modules文件夹、package-lock.json、yarn.lock文件
    2. 在Ubuntu虚拟机中重新执行npm install,自动拉取适配Linux平台的Chromium包
  • 第三步:检查运行权限配置
    你当前使用root用户运行程序,需确认Chromium执行文件权限:
    找到node_modules/puppeteer/.local-chromium/下对应Linux版本的chrome可执行文件,执行chmod +x <chrome文件路径>赋予执行权限
  • 第四步:最小用例验证
    新建测试脚本在服务器直接运行,确认Puppeteer本身可正常启动:
    const puppeteer = require('puppeteer');
    (async () => {
      const browser = await puppeteer.launch({
        headless: true,
        args: ['--no-sandbox', '--disable-setuid-sandbox']
      });
      const page = await browser.newPage();
      await page.goto('about:blank');
      console.log('启动成功');
      await browser.close();
    })();
    
    运行node test.js,如果能正常打印启动成功,说明问题出在原有项目的实例管理逻辑(比如你判断this.puppeteerBrowser是否为空的逻辑可能有边界问题),反之则是环境安装问题。

内容的提问来源于stack exchange,提问作者Dana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:06:04