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

使用shinytest::recordTest()时遇ReferenceError: Pickr未找到问题求助

解决shinytest::recordTest()与shinyWidgets::colorPickr的兼容性错误

问题原因

你遇到的ReferenceError: Can't find variable: Pickr错误,本质是shinytest默认依赖的PhantomJS(已停止维护的旧版无头浏览器)无法正确加载colorPickr组件依赖的Pickr JavaScript库,或者不支持该库所需的现代JS特性。

解决方案

1. 切换到Chrome Headless浏览器(推荐)

PhantomJS已停止更新,对现代JS支持不足,改用Chrome Headless可彻底解决这类兼容性问题:

  • 确保已安装Google Chrome浏览器;
  • 调用recordTest时指定浏览器参数:
    shinytest::recordTest(browser = "chrome")
    

Chrome Headless支持所有现代JS特性,能正常渲染colorPickr组件,录制测试流程不受影响。

2. 手动引入Pickr的JS库(适配PhantomJS场景)

如果必须使用PhantomJS,可在UI中提前引入Pickr的CDN资源,确保PhantomJS能加载到Pickr变量:
修改你的UI代码,在fluidPage内添加头部脚本:

ui <- fluidPage(
  tags$head(
    tags$script(src = "https://cdn.jsdelivr.net/npm/pickr-widget@1.8.2/dist/pickr.min.js")
  ),
  # 原有UI内容...
  titlePanel("Hello Shiny!"),
  sidebarLayout(
    # ...
  )
)

之后再运行shinytest::recordTest()即可避免找不到变量的错误。

3. 升级R及相关包到最新版本

你的R版本(3.6.0)和部分包版本较老旧,新版本可能修复了兼容性问题:

  • 升级R到4.0及以上版本;
  • 更新所有相关包:
    update.packages(c("shiny", "shinyWidgets", "shinytest"), dependencies = TRUE)
    

目前shinyWidgets最新版本已更新到0.8.x,对shinytest的兼容性更好。

验证

使用方案1的Chrome Headless方式,运行你提供的示例代码,调用shinytest::recordTest(browser = "chrome"),即可正常启动录制界面,不再出现Pickr变量错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:01:20