簡體   English   中英

為什么console.log在Shiny for R中不起作用?

[英]Why is console.log not a function in Shiny for R?

我像這樣在Shinys ui.R包含JavaScript

tags$body(tags$script(src="someJs.js"))

在我的someJs.js我有一個函數

function someFunc1() {
    ....;
}

... some more code ...

console.log(variable1);

所述console.log是函數的 soemFunc1() 當我啟動應用程序並查看控制台時,

console.log()不是函數。

這是為什么?

我還將d3加載到頭tags$head(tags$script(src="d3.v3.min.js")) 當我在控制台中嘗試d3.select...時,我也得到了

d3不是函數。

但是,我在應用程序中使用d3進行樣式設置。

js Shiny做了什么。 是否有物體將所有物體附在上面?

這里舉一個例子,容易重現。

ui.R

library(shiny)

shinyUI(fluidPage(
    tags$head(tags$script(src="https://d3js.org/d3.v3.min.js")),
    tags$head(tags$script(src="test.js")),
            mainPanel(
                    tags$div(id = "test", "test test test")
            )
    )

server.R

library(shiny)

shinyServer(function(input, output) {

})

server.Rui.R所在的目錄中創建一個www文件夾,並保存一個名稱為test.jsjs文件,其內容如下:

console.log("This will cause error")

現在,繼續打開控制台。 它說

console.log()不是函數

嘗試輸入瀏覽器d3的控制台。 它說

d3不是函數。

console.log()是一個JavaScript函數,因此您不能在R-Shiny中調用它並期望它在JavaScript中運行。 您必須明確告訴Shiny用JavaScript進行該調用。

由於這對我來說是相當常見的操作,因此我將其包含在軟件包Shinyjs中 ,您可以在R中調用logjs()函數,它將輸出內容寫入javascript控制台。

例:

shinyApp(
    ui = fluidPage(
        shinyjs::useShinyjs() # Set up shinyjs
    ),
    server = function(input, output) {
        shinyjs::logjs("hello")
    }
)

我不確定我是否完全了解您要做什么,但是如果您嘗試使用JavaScript中的console.log()來查看JavaScript控制台中的內容,那么您應該沒有問題:

library(shiny)
ui <- shinyUI(fluidPage(
  mainPanel(
      tags$script(HTML(
        "console.log('Here is some text');"
        ))
  )
)
)

server <- shinyServer(function(input, output, session) {

})
# Run the application
shinyApp(ui = ui, server = server)

如果運行此程序,然后使用Chrome或RStudio的網絡瀏覽器檢查頁面,然后單擊console(控制台),它將為您提供JavaScript控制台,您將看到console.log()函數的輸出。

如果要打印到R控制台,則必須使用服務器上的printcat

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM