我正在尝试通过服务器端路由使用 Meteor 访问 Rserve 服务器以调用 R 代码。允许访问 Rserve 的 Node.js 模块是node-rio我使用了meteorhacks:npm Meteor 包中的 Async.wrap 函数来包装“评估”方法。当我尝试在浏览器中访问路由路径“/rio”时,控制台日志中写入了“1”,这对于在 R 中评估命令“1”是正确的,但 Chrome 挂起并显示消息“Waiting对于本地主机”。它不会进入下一行,并且永远不会显示“结果:1”。消息“net::ERR_EMPTY_RESPONSE”最终出现在 Chrome 中。
Router.route('/rio', function() {
var rio = Meteor.npmRequire('rio');
var evalSync = Async.wrap(rio, 'evaluate');
var result = evalSync('1');
console.log("Result: " + result);
// JSON
this.response.writeHead(200, {'Content-Type': 'application/json'});
this.response.end(result);
}, {
where: 'server'
});
"evaluate" 有一个回调函数参数,但它被包装在一个选项参数中并被访问:
rio.evaluate(R_COMMAND, {callback: CALLBACK_FUNCTION})