Blogdown new post 插件创建但不加载新文件
Blogdown new post addin creates but not loads new file
上下文
安装后(参见之前的 ) and configured my personal Hugo website for a multilingual setup (by directories), I wanted to start creating content. Ideally, I wanted to use blogdown
in RStudio, via the addins. The website uses the Academic theme, rebranded 现在是 Wowchemy。
内容目录树如下:
content
|
├── en
├── authors
├── files (for static files)
├── home (homepage widgets)
├── post
├── project
└── resources
|
└── hu
├── authors
├── files (for static files)
├── home (homepage widgets)
├── post
├── project
└── resources
多语言 设置参考:
- Hugo Multilingual Part 1: Content translation - 概述,按目录和页面包管理内容翻译
- Start a Multi Language Blog with Hugo on Github Pages - 用于基本 config.toml 设置和突出显示部分的使用
- Light/Dark/Automatic translation - 用于了解如何在界面翻译中进行修改(虽然不知道如何与主题库共享)
- How can I add credits by the end of the page? - 通过 partials 翻译网页的页脚(这不是内容,不能在任何配置文件中设置)。
问题
当我在 RStudio 中使用新的 post 插件时,文件是在适当的位置创建的,但不会自动打开以进行编辑。英语和匈牙利语语言设置的工作方式相同。
> blogdown:::new_post_addin()
Listening on http://127.0.0.1:6918
C:\Users\HP\Documents\R\website\content\en\post20-11-04-how-this-site-was-created\index.en.md created
Warning in file(con, "r") :
cannot open file 'content/post/2020-11-04-how-this-site-was-created/index.en.md': No such file or directory
Warning: Error in file: cannot open the connection
91: file
90: readLines
87: hugo_convert_one
86: new_content
85: blogdown::new_post
84: observeEventHandler
13: shiny::runApp
12: shiny::runGadget
11: eval
10: eval
4: eval
3: eval
2: sys.source
1: blogdown:::new_post_addin
问题
如何解决?据我所知,创建文件后必须包含文件路径,因为文件是在正确的位置创建的。
配置
> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Hungarian_Hungary.1250 LC_CTYPE=Hungarian_Hungary.1250
[3] LC_MONETARY=Hungarian_Hungary.1250 LC_NUMERIC=C
[5] LC_TIME=Hungarian_Hungary.1250
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] shiny_1.5.0
loaded via a namespace (and not attached):
[1] Rcpp_1.0.5 bookdown_0.21 crayon_1.3.4 digest_0.6.26 later_1.1.0.1
[6] mime_0.9 R6_2.4.1 jsonlite_1.7.1 xtable_1.8-4 magrittr_1.5
[11] evaluate_0.14 blogdown_0.21 rlang_0.4.8 rstudioapi_0.11 miniUI_0.1.1.1
[16] promises_1.1.1 rmarkdown_2.4 tools_4.0.3 tinytex_0.26 fastmap_1.0.1
[21] httpuv_1.5.4 xfun_0.18 yaml_2.2.1 compiler_4.0.3 htmltools_0.5.0
[26] knitr_1.30
我不擅长使用调试工具,所以只是单步调试代码。 (感谢好教程的建议!)
第一件事:When in Doubt, Try to Upgrade Your Software Packages这是blogdown
包创建者的建议。已检查。
- 启动插件,
blogdown:::new_post_addin
被调用。
- 这调用了
new_post.R
。可以在以下位置找到源代码:https://github.com/rstudio/blogdown/blob/master/inst/scripts/new_post.R
blogdown::new_post()
是called at the end, with file
parameter from the updated输入文本域,也就是问题的情况下:“post20-11-04-how-this-site-was-created\index.en.md”
new_post()
函数(在 hugo.R) calls new_content()
中带有第三个参数,open = FALSE
,这意味着它不会打开文件,只是覆盖 file
变量(后面的路径)。在 new_post()
的末尾应该打开文件:这是发生错误的地方(通过尝试在错误的位置打开文件,错误的路径)。这意味着 new_content()
. 中必须发生一些不好的事情
new_content()
modify content_file()
的路径。这也是实际创建文件的步骤。
content_file()
modify 添加前缀的路径 get_config()
.
get_config()
尝试 extract 配置中某个字段的值,在 Hugo 的情况下:尝试找到 contentDir
。如果这导致 NULL(没有这样的列表项),则查看另一种可能性,最后 return 默认值(在 Hugo 的情况下:content
)。就是这样! RStudio 尝试打开内容目录中的文件,而不是语言子目录中的文件!
- 这意味着最后一个选项在
%n%
行中被return编辑(它是从knitr导入的,代表:if (is.null(x)) y else x
)。这意味着前面的参数 return 为 NULL,这意味着在 config
变量中找不到 contentDir。 config
的默认值由 config = load_config()
设置。这使用 find_config()
找到要解析的配置文件。
find_config()
uses config_files()
设置 Hugo 情况下的值:c('config.toml', 'config.yaml')
。但是我的设置在子目录中:在 /config/default_/languages.toml
文件中!哦,又一个学术主题的悲哀...
总结一下:blogdown
目前只加载根目录中的 config.toml
以检查 contentDir
值。 Academic,现在是 Wowchemy Hugo 主题,但是也将配置文件保存在 /config/default_/
目录中,其中 languages.toml
包含所需的值。
保留还是不保留学术主题? 是否坚持blogdown
?也许配置文件应该是合并为一个 config.toml,但无法在网上找到学术类的提示或示例。
编辑: 好的,问题的根源已经找到,但引发错误消息的实际错误与hugo_convert_one()
有关,作为回溯在问题中建议。这是第一次(也是最后一次)尝试打开错误路径的文件。
上下文
安装后(参见之前的 blogdown
in RStudio, via the addins. The website uses the Academic theme, rebranded 现在是 Wowchemy。
内容目录树如下:
content
|
├── en
├── authors
├── files (for static files)
├── home (homepage widgets)
├── post
├── project
└── resources
|
└── hu
├── authors
├── files (for static files)
├── home (homepage widgets)
├── post
├── project
└── resources
多语言 设置参考:
- Hugo Multilingual Part 1: Content translation - 概述,按目录和页面包管理内容翻译
- Start a Multi Language Blog with Hugo on Github Pages - 用于基本 config.toml 设置和突出显示部分的使用
- Light/Dark/Automatic translation - 用于了解如何在界面翻译中进行修改(虽然不知道如何与主题库共享)
- How can I add credits by the end of the page? - 通过 partials 翻译网页的页脚(这不是内容,不能在任何配置文件中设置)。
问题
当我在 RStudio 中使用新的 post 插件时,文件是在适当的位置创建的,但不会自动打开以进行编辑。英语和匈牙利语语言设置的工作方式相同。
> blogdown:::new_post_addin()
Listening on http://127.0.0.1:6918
C:\Users\HP\Documents\R\website\content\en\post20-11-04-how-this-site-was-created\index.en.md created
Warning in file(con, "r") :
cannot open file 'content/post/2020-11-04-how-this-site-was-created/index.en.md': No such file or directory
Warning: Error in file: cannot open the connection
91: file
90: readLines
87: hugo_convert_one
86: new_content
85: blogdown::new_post
84: observeEventHandler
13: shiny::runApp
12: shiny::runGadget
11: eval
10: eval
4: eval
3: eval
2: sys.source
1: blogdown:::new_post_addin
问题
如何解决?据我所知,创建文件后必须包含文件路径,因为文件是在正确的位置创建的。
配置
> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Hungarian_Hungary.1250 LC_CTYPE=Hungarian_Hungary.1250
[3] LC_MONETARY=Hungarian_Hungary.1250 LC_NUMERIC=C
[5] LC_TIME=Hungarian_Hungary.1250
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] shiny_1.5.0
loaded via a namespace (and not attached):
[1] Rcpp_1.0.5 bookdown_0.21 crayon_1.3.4 digest_0.6.26 later_1.1.0.1
[6] mime_0.9 R6_2.4.1 jsonlite_1.7.1 xtable_1.8-4 magrittr_1.5
[11] evaluate_0.14 blogdown_0.21 rlang_0.4.8 rstudioapi_0.11 miniUI_0.1.1.1
[16] promises_1.1.1 rmarkdown_2.4 tools_4.0.3 tinytex_0.26 fastmap_1.0.1
[21] httpuv_1.5.4 xfun_0.18 yaml_2.2.1 compiler_4.0.3 htmltools_0.5.0
[26] knitr_1.30
我不擅长使用调试工具,所以只是单步调试代码。 (感谢好教程的建议!)
第一件事:When in Doubt, Try to Upgrade Your Software Packages这是blogdown
包创建者的建议。已检查。
- 启动插件,
blogdown:::new_post_addin
被调用。 - 这调用了
new_post.R
。可以在以下位置找到源代码:https://github.com/rstudio/blogdown/blob/master/inst/scripts/new_post.R blogdown::new_post()
是called at the end, withfile
parameter from the updated输入文本域,也就是问题的情况下:“post20-11-04-how-this-site-was-created\index.en.md”new_post()
函数(在 hugo.R) callsnew_content()
中带有第三个参数,open = FALSE
,这意味着它不会打开文件,只是覆盖file
变量(后面的路径)。在new_post()
的末尾应该打开文件:这是发生错误的地方(通过尝试在错误的位置打开文件,错误的路径)。这意味着new_content()
. 中必须发生一些不好的事情
new_content()
modifycontent_file()
的路径。这也是实际创建文件的步骤。content_file()
modify 添加前缀的路径get_config()
.get_config()
尝试 extract 配置中某个字段的值,在 Hugo 的情况下:尝试找到contentDir
。如果这导致 NULL(没有这样的列表项),则查看另一种可能性,最后 return 默认值(在 Hugo 的情况下:content
)。就是这样! RStudio 尝试打开内容目录中的文件,而不是语言子目录中的文件!- 这意味着最后一个选项在
%n%
行中被return编辑(它是从knitr导入的,代表:if (is.null(x)) y else x
)。这意味着前面的参数 return 为 NULL,这意味着在config
变量中找不到 contentDir。config
的默认值由config = load_config()
设置。这使用find_config()
找到要解析的配置文件。 find_config()
usesconfig_files()
设置 Hugo 情况下的值:c('config.toml', 'config.yaml')
。但是我的设置在子目录中:在/config/default_/languages.toml
文件中!哦,又一个学术主题的悲哀...
总结一下:blogdown
目前只加载根目录中的 config.toml
以检查 contentDir
值。 Academic,现在是 Wowchemy Hugo 主题,但是也将配置文件保存在 /config/default_/
目录中,其中 languages.toml
包含所需的值。
保留还是不保留学术主题? 是否坚持blogdown
?也许配置文件应该是合并为一个 config.toml,但无法在网上找到学术类的提示或示例。
编辑: 好的,问题的根源已经找到,但引发错误消息的实际错误与hugo_convert_one()
有关,作为回溯在问题中建议。这是第一次(也是最后一次)尝试打开错误路径的文件。