node.js - 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 页面都存储在节点应用程序也能够访问和显示它们的其他文件夹中。
解决方案
您必须将 R 脚本部署到其他地方,然后使用节点服务器文件中的 API 调用调用该 R 脚本。
您可以用来在节点中将 rscript 作为 API 调用的服务之一是 Algorithmia。您只需要按照他们的说明将所有代码包装在一个函数中即可。一旦你创建了一个 R 项目,它就会在那里作为一个示例出现。
推荐阅读
- laravel-livewire - 如何使用数据库中的值作为 laravel livewire 中的属性
- javascript - 从VueJS中的api获取数据时如何添加加载器?
- reactjs - React Native FilatList 和 ScrollView 详细信息屏幕
- android - DrawerLayout 内的 RecyclerView
- javascript - 日期到 UTC 字符串在一天内返回日期,但比较返回 false
- python - 在 Python 中运行函数时未定义参数
- python-3.x - 现在有在 Windows 10 上安装 CuPy 的首选方法吗?
- python-3.x - 使用 discord.py 检查频道中用户的最简单方法
- javascript - React - 如何将一个简单的函数转换为一个类?
- mule - Dataweave 2.0 的输出不正确