r - 编写包时在 R 中找不到文件:正确的方法是什么?
问题描述
我正在使用plumber
. 主要代码:
#' @title startServer
#' @description Start the api server on port `port`
#'
#' @param port Port number
#' @return none
#' @examples
#' startServer(8000)
#' @export
startServer <- function(port) {
port <- if (port == "")
port = "8000"
router_some <- plumber$new("R/some.R")
router <- plumber$new()
router$mount("/some", router_some)
router$run(host = '0.0.0.0',
port = strtoi(port),
swagger = TRUE)
}
如果我从 R 控制台运行此代码,它可以正常工作:
startServer("8000")
Running plumber API at http://0.0.0.0:8000
Loading required namespace: swagger
Running Swagger UI at http://127.0.0.1:8000/__swagger__/
但是,每当我运行时check()
:
checking examples ... ERROR
Running examples in ‘...’ failed
The error most likely occurred in:
> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: startServer
> ### Title: startServer
> ### Aliases: startServer
>
> ### ** Examples
>
> startServer(8000)
Error in .subset2(public_bind_env, "initialize")(...) :
File does not exist: R/some.R
Calls: startServer -> <Anonymous> -> <Anonymous>
Execution halted
不再找到带有路线的文件。如何指向正确的文件?
我知道我可以以plumber
编程方式使用,但是,我似乎失去了适当的招摇文件生成(无参数)。
解决方案
我知道包构建是如何工作的,它非常简单:在构建期间,所有代码实际上都被执行并存储为 R 对象/结构。我们这里需要的是在构建时绑定路由器,并startServer
在完成时公开功能。或者:所有路由器逻辑都可以在构建时执行。只有启动服务器(router$run
)应该在startServer
router_some <- plumber$new("R/some.R")
router <- plumber$new()
router$mount("/some", router_some)
#' @title startServer
#' @description Start the api server on port `port`
#'
#' @param port Port number
#' @return none
#' @examples
#' startServer(8000)
#' @export
startServer <- function(port) {
port <- if (port == "")
port = "8000"
router$run(host = '0.0.0.0',
port = strtoi(port),
swagger = TRUE)
}
推荐阅读
- c++ - Visual Studio 2017 在包含 atomic 时无法运行代码分析
- gnuplot - 有没有办法改变 Gnuplot 上的 y 轴,以便我的图像从 16 小时到 15 小时而不是 0 到 24 小时?
- android - Android中持久化目录和缓存目录的区别?
- c# - 将包含带有连字符的 Header 属性的请求绑定到 .Net Core 3.1 API
- java - 是否可以在片段类中设置 ViewPager?
- selenium - 用于显示当前时间的 Xpath 或 cssSelector
- credit-card - 是否有允许上传 B2B 支付卡详细信息文件的服务?
- python - tkinter - 如何使用输入到 Entry 小部件中的文件路径作为变量?
- oracle - SQLDeveloper:连接节点从“连接”选项卡中消失
- reactjs - 如何重构 Redux-Toolkit、createAsyncThunk 和 extraReducers 中的重复代码?