RStudio Viewer抛出错误

时间:2017-04-19 22:32:27

标签: r rstudio

问题

某些版本的RStudio在我的javascript小部件的Viewer窗格中抛出了一个错误,有些版本没有。

代码

我为我的htmlwidget软件包创建了googleway,用于绘制Google地图。

要重现此问题(如果您的系统确实存在问题),您只需运行此代码

即可
devtools::install_github("SymbolixAU/googleway")
library(googleway)
google_map(key = '')  ## you don't need a key to see the error

但如果您想查看地图,则需要Google Maps API key

描述

我遇到的问题是,在某些版本的Rstudio中,地图会显示在 Viewer 窗格中,而在其他版本中则不会显示。

当我"检查"查看器(右键单击>检查>控制台),我收到错误

  

SyntaxError:意外的标识符' i'。预计要么' in'或者'在枚举语法中。

enter image description here

指向javascript中的for循环的链接(请参见屏幕截图和source code

enter image description here

今天早上我在导致错误的系统上升级了Rstudio,但它仍然给出了错误。

以下两个屏幕截图显示了两个不同的Mac(都运行OS Sierra)和Rstudio,以及

的示例
  • Rstudio v1.0.143 - 无法正常工作
  • Rstudio v1.0.136 - 工作

enter image description here

enter image description here

为什么某些版本的RStudio会抛出错误,有些版本不会出错?

1 个答案:

答案 0 :(得分:3)

@popportfolio的建议有助于(再次!)找到解决方案。

我不相信这个问题纯粹是由于Rstudio,或者还有其他因素,特别是因为小部件适用于旧版本,但是现在我将把它作为解决方案。

行中的let

for (let i = 0; i < data.calls.length; i++) {
并非所有浏览器都支持

,因此将其更改为var适用于该行(以及使用let的所有行)。

我还在使用this method来查找数组中的值

data_.find(x => x.id === _id)

所有浏览器都不再支持,因此还原为

function findById(source, id) {
  for (var i = 0; i < source.length; i++) {
    if (source[i].id === id) {
      return source[i];
    }
  }
  return;
}

似乎也解决了这个问题。

et voila!

enter image description here