plotly / plotly/plotly.R

libcurl error when using htmlwidgets::saveWidget along with plotly::partial_bundle without an internet connection

Offen
#2,498 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
R
Sterne
2.7k
Forks
641
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Running the ?plotly::partial_bundle example without an internet connection available results in the below error.
I think it used to work without accessing https://cdn.plot.ly ?
As a workaround I'm now using curl::has_internet to check whether I can use partial_bundle.

Example:

library(plotly)
p <- plot_ly(x = 1:10, y = 1:10) %>% add_markers()
save_widget <- function(p, f) {
  owd <- setwd(dirname(f))
  on.exit(setwd(owd))
  htmlwidgets::saveWidget(p, f)
  mb <- round(file.info(f)$size / 1e6, 3)
  message("File is: ", mb," MB")
}
f1 <- tempfile(fileext = ".html")
f2 <- tempfile(fileext = ".html")
save_widget(p, f1)
save_widget(partial_bundle(p), f2)

Error:

Error in curl::curl_download(paste0("https://cdn.plot.ly/", bundle_script),  : 
  Could not resolve hostname [cdn.plot.ly]:
Could not resolve host: cdn.plot.ly
11.
stop(e)
10.
raise_libcurl_error(6L, "Could not resolve hostname", "Could not resolve host: cdn.plot.ly",
"https://cdn.plot.ly/plotly-basic-2.25.2.min.js", NULL)
9.
curl::curl_download(paste0("https://cdn.plot.ly/", bundle_script),
tmpfile)
8.
verify_partial_bundle(p)
7.
plotly_build.plotly(p)
6.
plotly_build(p)
5.
htmlwidgets::saveWidget(p, f)
4.
x$elementId %||% paste("htmlwidget", createWidgetId(), sep = "-")
3.
toHTML(widget, standalone = TRUE, knitrOptions = knitrOptions)
2.
htmlwidgets::saveWidget(p, f)
1.
save_widget(partial_bundle(p), f2)

sessionInfo:

R version 4.6.1 (2026-06-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 10 x64 (build 19045)

Matrix products: default
  LAPACK version 3.12.1

locale:
[1] LC_COLLATE=German_Germany.utf8  LC_CTYPE=German_Germany.utf8    LC_MONETARY=German_Germany.utf8 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.utf8    

time zone: Europe/Berlin
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] htmlwidgets_1.6.4 plotly_4.12.1     ggplot2_4.0.3     shiny_1.14.0     

loaded via a namespace (and not attached):
 [1] sass_0.4.10         generics_0.1.4      tidyr_1.3.2         digest_0.6.39       magrittr_2.0.5      evaluate_1.0.5     
 [7] grid_4.6.1          RColorBrewer_1.1-3  fastmap_1.2.0       jsonlite_2.0.0      promises_1.5.0      httr_1.4.8         
[13] purrr_1.2.2         crosstalk_1.2.2     viridisLite_0.4.3   scales_1.4.0        jquerylib_0.1.4     cli_3.6.6          
[19] rlang_1.3.0         withr_3.0.3         cachem_1.1.0        yaml_2.3.12         otel_0.2.0          tools_4.6.1        
[25] memoise_2.0.1       dplyr_1.2.1         httpuv_1.6.17       curl_8.0.0          vctrs_0.7.3         R6_2.6.1           
[31] mime_0.13           lifecycle_1.0.5     fontawesome_0.5.3   pkgconfig_2.0.3     pillar_1.11.1       bslib_0.12.0       
[37] later_1.4.8         gtable_0.3.6        data.table_1.18.6.1 glue_1.8.1          Rcpp_1.1.2          xfun_0.60          
[43] tibble_3.3.1        tidyselect_1.2.1    rstudioapi_0.19.0   knitr_1.51          farver_2.1.2        xtable_1.8-8       
[49] htmltools_0.5.9     rmarkdown_2.31      compiler_4.6.1      S7_0.2.2     

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginnen Sie mit plotly::partial_bundle und verify_partial_bundle, die im Fehler-Stack erscheinen, und reproduzieren Sie das Beispiel mit htmlwidgets::saveWidget, während Sie offline sind. Verfolgen Sie den Aufruf von curl::curl_download für das CDN-Bundle und prüfen Sie vorhandene Tests oder Beispiele rund um diese Einstiegspunkte. Als erledigt gilt die Aufgabe, wenn der gemeldete Offline-Workflow ein definiertes, verifiziertes Verhalten ohne den Fehler bei der Hostnamenauflösung aufweist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
plotly, r
Bereich
data-visualization, networking
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.