如何知道应用程序是 运行 在本地还是在服务器上? (R闪亮)
How to know if the app is running at local or on server? (R Shiny)
我在我的笔记本电脑上测试我的应用程序,然后将它部署到 shinyapps 服务器。
在部署之前,我需要删除设置路径的语句,例如
setwd('/Users/MrY/OneDrive/Data')
有没有办法让代码确定它是 运行 本地还是服务器上的,这样它就会像:
if (isLocal()) {
setwd('/Users/MrY/OneDrive/Data')
}
一个简单的示例代码(如果 setwd
未被删除,它将在服务器上失败):
server.R
library(shiny)
setwd('/Users/Yuji/OneDrive/Data/TownState')
data = 'data1.csv' # to test, using an empty .csv file
shinyServer(function(input, output) {
})
ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Click the button"),
sidebarPanel(
actionButton("goButton", "Go!")
),
mainPanel(
)
))
您可以检索主机名并进行查询。计算机应具有不同的主机名。
library(R.utils)
hname <- System$getHostname()
产量
nodename
"mikes-air-3.wisedom.local"
EDIT 2020:仍然没有官方方法可以做到这一点,但我会选择易慧的方法 is_local <- Sys.getenv('SHINY_PORT') == ""
我不知道这是否正确,但您可以使用 session$clientData$url_hostname
查看主机。当你在本地 运行 时,除非你专门更改主机,否则它将是 127.0.0.1
,我猜在 shinyapps 上它会是 shinyapps.io
之类的东西。示例代码
runApp(shinyApp(
ui = fluidPage(
),
server = function(input, output, session) {
observe({
if (session$clientData$url_hostname == "127.0.0.1") {
setwd(...)
}
})
}
))
那种东西应该有用,但我不能保证它是否是最好的解决方案
在 Shiny 中执行此操作的标准方法是:Sys.getenv('SHINY_PORT')
。你可以这样写:
is_local <- Sys.getenv('SHINY_PORT') == ""
我在我的笔记本电脑上测试我的应用程序,然后将它部署到 shinyapps 服务器。 在部署之前,我需要删除设置路径的语句,例如
setwd('/Users/MrY/OneDrive/Data')
有没有办法让代码确定它是 运行 本地还是服务器上的,这样它就会像:
if (isLocal()) {
setwd('/Users/MrY/OneDrive/Data')
}
一个简单的示例代码(如果 setwd
未被删除,它将在服务器上失败):
server.R
library(shiny)
setwd('/Users/Yuji/OneDrive/Data/TownState')
data = 'data1.csv' # to test, using an empty .csv file
shinyServer(function(input, output) {
})
ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Click the button"),
sidebarPanel(
actionButton("goButton", "Go!")
),
mainPanel(
)
))
您可以检索主机名并进行查询。计算机应具有不同的主机名。
library(R.utils)
hname <- System$getHostname()
产量
nodename
"mikes-air-3.wisedom.local"
EDIT 2020:仍然没有官方方法可以做到这一点,但我会选择易慧的方法 is_local <- Sys.getenv('SHINY_PORT') == ""
我不知道这是否正确,但您可以使用 session$clientData$url_hostname
查看主机。当你在本地 运行 时,除非你专门更改主机,否则它将是 127.0.0.1
,我猜在 shinyapps 上它会是 shinyapps.io
之类的东西。示例代码
runApp(shinyApp(
ui = fluidPage(
),
server = function(input, output, session) {
observe({
if (session$clientData$url_hostname == "127.0.0.1") {
setwd(...)
}
})
}
))
那种东西应该有用,但我不能保证它是否是最好的解决方案
在 Shiny 中执行此操作的标准方法是:Sys.getenv('SHINY_PORT')
。你可以这样写:
is_local <- Sys.getenv('SHINY_PORT') == ""