HTMLWidget:闪亮的应用程序在Rstudio中运行良好但在Shiny-Server上运行不正常

时间:2017-06-14 15:19:00

标签: javascript r shiny htmlwidgets

最近我写了一个html小部件来使用javascript文件进行维恩图绘制。在RStudio中,该应用程序工作正常,所以到目前为止我还没有意识到在闪亮的服务器上使用该应用程序存在问题。

如果我使用Shiny in RStudio运行应用程序,则不会抛出错误,Web浏览器会显示我的Shiny页面的所有其他元素,除了新的小部件。考虑到浏览器的开发者控制台,我看到以下错误,这对我来说是隐秘的。

Uncaught TypeError: Cannot read property 'filter' of undefined
at exports.OutputBinding.shinyBinding.find (htmlwidgets.js:475)
at a (shiny.min.js:3)
at f (shiny.min.js:3)
at initShiny (shiny.min.js:3)

我也在RStudio之外运行它只是为了确定但同样的错误。

我用2个独立的软件包测试了这个,所以它似乎是我身边的一个系统错误。

通过在浏览器中检查正在运行的应用程序,我看到创建了以下div。但是,我找不到提交的数据。

<div id="vennDia" style="width:100%; height:400px; " class="vennConductor html-widget html-widget-output"></div>

vennConductor.js:

HTMLWidgets.widget({
  name: 'vennConductor',
  type: 'output',

 initialize: function(el, width, height) {
    },
    renderValue: function(el, x, instance) {
        // console.log(x)
        $(el).jvenn(x)},
    resize: function(el, width, height, instance) {
        $(el).attr("width", width).attr("height", height)
    }
});

在我看来“相关”HTMLWidget R代码:

htmlwidgets::createWidget(
    name = 'vennConductor',
    json_payload,
    width = width,
    height = height,
    package = 'vennConductor',
    elementId = elementId,
    sizingPolicy = htmlwidgets::sizingPolicy(
      browser.fill = TRUE,
      viewer.fill = TRUE
    )
  )


#' @name vennConductor-shiny
#' @export
vennConductorOutput <- function(outputId, width = '100%', height = '400px'){
  htmlwidgets::shinyWidgetOutput(outputId, 'vennConductor', width, height, package = 'vennConductor')
}

#' @rdname vennConductor-shiny
#' @export
renderVennConductor <- function(expr, env = parent.frame(), quoted = FALSE) {
  if (!quoted) { expr <- substitute(expr) } # force quoted
  htmlwidgets::shinyRenderWidget(expr, vennConductorOutput, env, quoted = TRUE)
}

和小部件调用:

jVennConductor(elementId = 'vennDia', venn_lists = vlist_01, displayMode=T, displayStat=T)

希望有人能帮助我。感谢!!!

P.s。:R和a Packages是最新的,我的操作系统是WINDOWS 10。

1 个答案:

答案 0 :(得分:1)

我们找到了问题的原因。 Shiny通过小写,jVennConductor以大写形式导入jquery,这是导致错误的原因。简单的改为小写都解决了这个问题。

感谢Joe Cheng

https://github.com/ramnathv/htmlwidgets/issues/253