VSC R 调试控制台对用户的输入没有反应

VSC R debug console not reacting to input from user

我正在 VSC 中调试 R 脚本。此脚本记录到 Google API,因此它会提示用户从菜单中 select 预授权帐户:

1: email1@email1.com
2: email2@email2.com

问题是在进入菜单选项(1,在我的例子中)并在 DEBUG CONSOLE 中输入 Enter 后,即使输入被接受并显示在控制台中。

您可以在此处查看 DEBUG CONSOLE 的图像:

如您所见,进入菜单选项后没有任何反应(当我在 PyCharm 中调试此代码时,脚本在进入 1 后继续执行)

VSCode-R-Debugger 通过向 [= 的标准输入发送输入来启动和控制 R 程序35=]child进程。要在调试模式下进行输入,您必须在调试控制台中输入数据并在其前面加上 ###stdin。该功能通过以下 Github 请求进行描述并标记为已解决。我能够使用以下示例代码来确认解决方案是最新的并且按描述工作:

#!/usr/bin/env Rscript

typeline <- function(msg = "Enter text: ") {
  if (interactive()) {
    txt <- readline(msg)
  } else {
    cat(msg)
    
    txt <- readLines("stdin", n = 1)
    
  }
  return(txt)
}

txt = typeline("your first message: ")
print(txt)
txt2 = typeline("your second message: ")
print(txt2)

如果我们在第 5 行或第 9 行设置断点,然后我们可以通过键入 ###stdin 5 来接收 stdin 输入调试控制台。见下图。

我希望这能为您指明正确的方向。我能够使用以下功能请求中的指南重现您描述的行为并解决问题:

注意安全。

参考文献:

https://github.com/ManuelHentschel/VSCode-R-Debugger/pull/46

Session 信息:

sessionInfo()
List of 13
_names: chr [1:13] "R.version" "platform" "locale" "running" "RNGkind" "basePkgs" ...
_class:"sessionInfo"
__unclass():List of 13
R.version:List of 14
platform:"x86_64-apple-darwin21.1.0 (64-bit)"
locale:"en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"
running:"macOS Monterey 12.1"
RNGkind: chr [1:3] "Mersenne-Twister" "Inversion" "Rejection"
basePkgs: chr [1:7] "stats" "graphics" "grDevices" "utils" "datasets" "methods" ...
otherPkgs:List of 1
loadedOnly:List of 6
matprod:"default"
BLAS:"/usr/local/Cellar/openblas/0.3.19/lib/libopenblasp-r0.3.19.dylib"
LAPACK:"/usr/local/Cellar/r/4.1.2/lib/R/lib/libRlapack.dylib"
system.codepage:"NULL"
codepage:"NULL"