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

通过VS Code Remote-SSH远程运行Puppeteer代码失败求助

解决远程运行Puppeteer爬虫的问题及触发方法

一、解决Puppeteer启动失败的核心问题

错误提示Missing X server or $DISPLAY是因为Puppeteer默认尝试启动带图形界面的浏览器,但远程SSH连接无图形环境,两种解决方式:

1. 启用无头模式(推荐)

修改Puppeteer启动代码,添加无头模式配置,无需依赖X服务器:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: "new", // Puppeteer v19+使用此参数,旧版本用headless: true
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage',
      '--disable-gpu'
    ]
  });
  // 后续爬虫逻辑...
})();

2. 安装虚拟X服务器(需图形界面场景)

如果必须运行带界面的浏览器,在Ubuntu上安装Xvfb虚拟显示服务:

  • 安装依赖:
sudo apt update && sudo apt install xvfb
  • 用xvfb-run包裹命令运行代码:
xvfb-run node advancedSearch.js

补充:安装浏览器依赖库

确保Ubuntu上安装了Puppeteer所需的系统库,避免启动失败:

sudo apt install libnss3 libatk-bridge2.0-0 libdrm-dev libxkbcommon-dev libgbm-dev libasound-dev libatspi2.0-0 libxshmfence-dev

二、远程触发Ubuntu上代码运行的方法

1. VS Code远程终端直接运行

通过Remote-SSH连接后,打开VS Code终端(确保为远程环境),执行:

cd ~/repo/scraper && node advancedSearch.js

2. Mac本地终端SSH远程执行

无需打开VS Code,直接在Mac终端用SSH命令触发:

ssh admin@你的UbuntuIP地址 "cd ~/repo/scraper && node advancedSearch.js"

如需后台运行(断开SSH不中断),用nohup:

ssh admin@你的UbuntuIP地址 "cd ~/repo/scraper && nohup node advancedSearch.js > scraper.log 2>&1 &"

日志会输出到scraper.log文件。

3. VS Code调试运行

配置VS Code的launch.json(远程环境下),示例配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Run Advanced Scraper",
      "program": "${workspaceFolder}/scraper/advancedSearch.js",
      "cwd": "${workspaceFolder}/scraper"
    }
  ]
}

点击调试按钮即可远程触发代码运行并调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:30:22