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