Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有效地调试闪亮的应用程序_R_Debugging_Shiny - Fatal编程技术网

R 有效地调试闪亮的应用程序

R 有效地调试闪亮的应用程序,r,debugging,shiny,R,Debugging,Shiny,我有一个复杂的闪亮应用程序,它跨越多个文件,使用多个包中的代码。在R Studio中本地运行时,应用程序可以工作,但在我的服务器上,它会抛出一个一般错误: 错误:不知道如何将“x”转换为类“日期” 这可能是一个简单的编程错误,但要准确地找出错误在代码中的位置却很困难 如何查找和修复闪亮应用程序中的错误源?有哪些工具可以系统地做到这一点 关于这方面的类似问题也有一些讨论 发行日期: 服务器端可能使用不同的操作系统,使用不同的默认字符集编码(例如“latin1”、“utf-8”)。有时,在R中加载

我有一个复杂的闪亮应用程序,它跨越多个文件,使用多个包中的代码。在R Studio中本地运行时,应用程序可以工作,但在我的服务器上,它会抛出一个一般错误:

错误:不知道如何将“x”转换为类“日期”

这可能是一个简单的编程错误,但要准确地找出错误在代码中的位置却很困难

如何查找和修复闪亮应用程序中的错误源?有哪些工具可以系统地做到这一点


关于这方面的类似问题也有一些讨论

发行日期: 服务器端可能使用不同的操作系统,使用不同的默认字符集编码(例如“latin1”、“utf-8”)。有时,在R中加载数据会丢失编码。函数read.csv有一个参数encoding=“UTF-8”,您可以使用它


为了调试,我依赖于print语句。我还想知道其他人是否找到了更系统的方法

您可以结合使用
日志记录
shinyjs
在服务器上实现日志记录

install.packages("logging")
install.packages("shinyjs")
在ui.R中,使用
shinyjs::useShinyjs
绑定
shinyjs

library(shinyjs)

shinyUI(
    fluidPage(
        useShinyjs(),
# etc...
在server.R中,将
logjs
添加到日志处理程序列表中:

library(magrittr)
library(shinyjs)
library(logging)

basicConfig()

options(shiny.error = function() { 
    logging::logerror(sys.calls() %>% as.character %>% paste(collapse = ", ")) })

shinyServer(function(input, output, session) {

    printLogJs <- function(x, ...) {

        logjs(x)

        T
    }

    addHandler(printLogJs)
# etc...
库(magrittr)
图书馆(shinyjs)
库(日志)
基本配置()
选项(shinny.error=function(){
日志::logerror(sys.calls()%%>%as.character%%>%paste(collapse=“,”))
shinyServer(功能(输入、输出、会话){
printLogJs我很惊讶没有提到这一点。这篇文章在调试和错误处理方面非常全面


您可以查看服务器的日志,这将更直接地解决OP提出的问题。

是的,服务器运行Linux,但我的机器是Windows。如何让
print
语句显示在浏览器控制台中?print语句将显示在R控制台中。虽然是基本的,但简单的“转到这一部分”和“got to the part”语句帮助我调试。我使用RStudio并运行runApp()在Chrome浏览器中显示应用程序。是的,这是RStudio中的一个选项,但在远程服务器上运行时不可能。我相信服务器日志中会显示打印语句。您可能需要服务器管理员的帮助才能访问这些日志。