标签: windows 10

  • 在 Windows 10 WSL 中使用 Puppeteer

    在 Windows 10 WSL 中使用 Puppeteer

    使用 Puppeteer 很久了,基本上一直都在使用原生版本,macOS 或者 Ubuntu。在 Windows 10 上,我比较喜欢用 WSL,基本上所有其它脚本和程序都跑在 WSL 上,唯独 Puppeteer,我会专门弄一个目录,以便运行 Windows 版本。

    前些日子去深圳办公,需要跑测试。我厂的测试基于 Perl 的 Test::Base,但 Windows 下的 Perl 不太好用(其实是我没仔细研究),远不如 WSL 开箱即用。所以就折腾了一下 WSL,竟然折腾好了,所以记一下

    0. 升级到最新系统

    第一步当然是各种升级,包括系统、WSL 和 node.js。我觉得这次之所以能成功,很大程度上得益于 Windows 10 的发展和 WSL 的升级。对了,Node.js v14 已经 LTS,建议一起升级。

    sudo apt update
    sudo apt install
    
    # node.js 14
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install -y nodejs
    
    # 在项目目录安装最新版 puppeteer
    npm i puppeteer@5

    1. 运行 puppeteer,查漏补缺

    接下来随便运行一个包含了 puppeteer 的 JS,系统会提示缺少模块,但错误提示大概是找不到文件或者没有权限访问,存在一些迷惑性。仔细看错误提示,能找到缺少的模块名称,对我而言,大概是这些:

    • libnss3
    • libatk1.0-0
    • libatk-bridge2.0-0
    • libcups2
    • libxkbcommon0
    • libgtk-3-0

    这里有个小技巧。错误提示可能是:找不到 libatk1.0.so.0,但是我用 sudo apt install libatk1.0 却无法安装,说找不到这个包(我之前就卡在这里)。此时,可以通过 apt search libatk 搜索,然后就能找到 libatk1.0-0 这个包,最后的 -0 对应的就是 .so.0,安装即可。其它包以此类推。

    重复这个过程,直到所有包都安装成功。

    2. 修改 JS,添加 --no-sandbox

    继续运行,会报告另一个错误,大概意思是目前的版本存在各种问题,建议增加 --no-sandbox 选项。

    修改 JS 文件,在 puppeteer.launch() 增加 --no-sandbox

    const browser = puppeteer.launch({
      args: [
        '--no-sandbox',
      ],
    });

    3. 完成

    现在 Puppeteer 应该可以正常工作了,不过因为缺少 UI 模块,所以暂时无法启动 headless: false,需要的话,还是用原生吧。

  • 笔记本坏了

    笔记本坏了

    从前司离职之后,买了台 XPS-13 作为日常外出办公用机。结果61那天,不知道怎么回事,突然出问题了,表现为:

    1. 开机后,提示硬盘有问题,请重启修复
    2. 大部分软件没问题,有些文件打不开,同时打开“文件资源管理器”变得特别慢,有点像我上一次坏硬盘的状态
    3. 重启后会修复,但是修复到100%就会蓝屏死机,然后重启
    4. 然后进入 Dell SupportAssist 界面,扫描后说一切正常,但是找不到启动设备,只能关机
    5. 按任意键跳过检测,可以进入系统,问题照旧

    (更多…)