我正在用golem
构建一个作为R包的Shiny应用程序,其想法是帮助科学家将他们的异构领域数据转换为通用的XML格式,以提高数据标准化和互操作性。
基本架构是,我在Shiny服务器外部的global.R
中定义一个空的目标XML文档,并使用xml2
包作为后端,从应用程序中的各种模块和实用程序函数访问它,以添加节点和内容。
使用golem::run_dev()
(shiny::shinyApp
的 Package 器)进行本地测试时,应用运行流畅,我可以创建、编辑和导出XML目标文档。但是,当我尝试从构建的包启动应用时,我收到以下错误:
Error in write_xml.xml_document(xml_document, tmp, options = "format") :
external pointer is not valid
下面是一个small example package,它重现了错误。
我知道外部指针只在相同的R会话中有效,但我不知道这与我的问题有什么关系。似乎global.R
和应用程序在从包启动时运行在不同的会话中,而在本地启动时却没有?
1条答案
按热度按时间vulvrdjw1#
我也有类似的问题:使用
read_xml()
导入XML文件的包会产生错误阅读external pointer is not valid”。在我的情况下,一个可能的解决方案是克隆源包,然后在本地会话中运行pkgname/R
中的所有文件。这不是包应该如何操作,但只要没有更优雅的解决方案,我会推荐这种方法。