首页 > 解决方案 > Ubuntu 服务器上的 Rscript 和 Nodejs 集成

问题描述

我正在尝试构建一个 node js 应用程序,在其中我调用 rscript 进行一些统计计算并返回一个包含 8 个元素的数组,然后我将其传递回 nodejs,以便我们可以在 ejs 页面上显示这些元素。

我能够在本地主机上成功地执行此操作,一切正常,甚至 rscript 正在运行并返回输出,但是当我们尝试在 ubuntu 服务器上执行相同操作时,我们不会在终端上获取任何 console.log(out) (out 是从 rscript 获取输出的变量)我们得到一个空值。

我们以与所示相同的方式在 localhost 和服务器中调用脚本。

`console.log(data);
var out = rscript(abc.R)
.data(data.xyz,data.abc)
.callSync();
console.log(out);`

在上面的代码中,我们在 data 变量中获得了 json,它在本地和服务器上都提供了日志。

我已经使用 npm 在 nodejs 中安装了所有需要的库,例如 rscirpt,并且已经在我的 ubuntu 服务器上安装了 R 和 Rstudio,并且还安装了运行 rscript 所需的所有库。

rscript 放置在我的 index.js 所在的同一文件夹中,所有 ejs 页面都存储在节点应用程序也能够访问和显示它们的其他文件夹中。

标签: node.jsdigital-oceanubuntu-18.04rscript

解决方案


您必须将 R 脚本部署到其他地方,然后使用节点服务器文件中的 API 调用调用该 R 脚本。

您可以用来在节点中将 rscript 作为 API 调用的服务之一是 Algorithmia。您只需要按照他们的说明将所有代码包装在一个函数中即可。一旦你创建了一个 R 项目,它就会在那里作为一个示例出现。


推荐阅读