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

树莓派B上Node-RED中使用Playwright生成截图遇require未定义问题求助

在Node-RED中使用Playwright生成网页截图的解决方案

问题背景

在树莓派B上,单独运行的Playwright截图JS代码可正常执行,但将代码粘贴到Node-RED函数块时,出现错误:

11/8/2023, 2:24:40 PMnode: function 1
function : (error)
"ReferenceError: require is not defined (line 2, col 22)"

同时尝试安装node-red-contrib-playwright节点时,遇到无文档且无法添加的问题。

解决方案一:修复函数节点的require限制

Node-RED的函数节点默认禁用了require方法,需通过全局上下文配置引入模块:

  1. 打开Node-RED的配置文件(路径通常为~/.node-red/settings.js)
  2. 找到functionGlobalContext配置项,添加playwright模块:
    functionGlobalContext: {
        // 保留原有配置,新增以下行
        playwright: require('playwright')
    },
    
  3. 重启Node-RED服务
  4. 修改函数节点中的代码,从全局上下文获取Playwright:
    const { chromium } = global.get('playwright');
    
    (async () => {
      const browser = await chromium.launch({
        headless: true,
        // 树莓派环境需指定Chromium路径,示例:
        // executablePath: '/usr/bin/chromium-browser'
      });
      const context = await browser.newContext();
      const page = await context.newPage();
      await page.goto('https://www.wikipedia.org/');
      // 建议使用绝对路径保存截图,避免权限或路径问题
      await page.screenshot({path:'/home/pi/wiki.png'})
    
      await context.close();
      await browser.close();
    })();
    
    注意:树莓派上可能需要手动指定Chromium的可执行路径,否则会出现浏览器找不到的错误。

解决方案二:通过exec节点执行外部JS文件

如果不想修改Node-RED配置,可直接用exec节点运行外部脚本:

  1. 将你的Playwright代码保存为独立JS文件,比如/home/pi/scripts/wiki-screenshot.js
  2. 在Node-RED编辑器中添加exec节点,配置执行命令:
    node /home/pi/scripts/wiki-screenshot.js
    
  3. 使用注入节点触发exec节点,执行截图脚本
  4. 确保Node-RED运行用户(通常是pi)拥有该脚本的读取权限,以及截图保存目录的写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:46:21