plotly / plotly/plotly.R

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

Aperta
#2,498 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
R
Stelle
2.7k
Fork
641
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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     

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con plotly::partial_bundle e verify_partial_bundle, che compaiono nello stack degli errori, e riproduci l'esempio con htmlwidgets::saveWidget mentre sei offline. Traccia la chiamata a curl::curl_download per il bundle CDN e ispeziona i test o gli esempi esistenti relativi a questi punti di ingresso. Il lavoro è completato quando il workflow offline segnalato ha un comportamento definito e verificato senza l'errore di risoluzione del nome host.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
plotly, r
Ambito
data-visualization, networking
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Attiva
Chiarezza
Abbastanza chiara
Idoneità per principianti
68/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.