未捕获的ReferenceError:未定义Shiny

时间:2019-01-09 11:52:19

标签: r shiny centos shiny-server

这个问题与application loading without css有关。我检查了Java脚本控制台并遇到问题

Uncaught ReferenceError: Shiny is not defined
    at (index):21

Uncaught ReferenceError: shinyjs is not defined
    at (index):39

源代码中索引21处的脚本

 `<script>Shiny.addCustomMessageHandler('shinyjs-show', function(params) { shinyjs.debugMessage('shinyjs: calling function "show" with parameters:'); shinyjs.debugMessage(params); shinyjs.show(params);})`;

该应用程序正在CentOs 6的闪亮服务器上运行。

3 个答案:

答案 0 :(得分:1)

确保在运行该应用的会话内的某个地方调用shinyjs::useShinyjs()
通常,您会将其包含在闪亮的UI中。
但是,如果UI是在包内创建的,则在构建或安装包时,而不是在应用运行所在的会话中,它可能会调用useShinyjs

答案 1 :(得分:0)

这可能是问题所在(请参阅您的评论)。

按照here的指示,通过以下方式安装软件包:

sudo su - -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""

这是因为您的应用将由一个名为shiny的用户运行,该用户可能由于您是另一个用户安装了该软件包而无法访问软件包shiny

答案 2 :(得分:0)

问题可能是因为在Shiny创建Shiny对象之前运行代码。如果您查看闪亮的代码,则具有以下内容:

$(function() {
  // Init Shiny a little later than document ready, so user code can
  // run first (i.e. to register bindings)
  setTimeout(initShiny, 1);
});

init_shiny.js#L511

您可以使用我正在使用的此功能:

var shinyReady = (function() {
  var callbacks = $.Callbacks();
  $(function() {
    setTimeout(function() {
      callbacks.fire();
      callbacks = null;
    }, 100); // this probably can be 2 since shiny use 1
  });
  return function(callback) {
    if (callbacks) {
      callbacks.add(callback);
    } else {
      callback();
    }
  };
})();

shinyReady(function() {
   // your code that use Shiny object
});