gpt4 book ai didi

javascript - Iron 路由器使用 Meteor.call 进行操作时会抛出 writeHead 不是函数

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:25 25 4
gpt4 key购买 nike

我正在尝试编写一个从服务器返回到客户端响应的缓冲区。

因此,我定义了一个在 action 函数上运行以获取文件的路由:

Router.route('/download/:blabla', {
name: 'download',
action: function () {
var that = this.response;
Meteor.call('downloadFile', blabla, function (err, result) {
// error check etc.
var headers = {
'Content-type' : 'application/octet-stream',
'Content-Disposition' : 'attachment; filename=' + fileName
};
that.writeHead(200, headers);
that.end(result);
}
}
});

这会抛出:

Exception in delivering result of invoking 'downloadFile': TypeError: that.writeHead is not a function

没有Metoer.call它也能工作......

我正在使用nodejs流来获取服务器端函数的缓冲区并且它有效。

提前致谢

最佳答案

您是否尝试过在 IR 中使用仅服务器端路由?即,仅使用“{where:"server"}”在服务器上访问路由,以避免必须执行方法调用,如下面的示例 here (请注意,在他的示例中提供文件需要根据评论添加meteorhacks:npm包,但您也许可以避免这种情况...):

Router.route("/file/:fileName", function() {
var fileName = this.params.fileName;

// Read from a file (requires 'meteor add meteorhacks:npm')
var filePath = "/path/to/pdf/store/" + fileName;
var fs = Meteor.npmRequire('fs');
var data = fs.readFileSync(filePath);

this.response.writeHead(200, {
"Content-Type": "application/pdf",
"Content-Length": data.length
});
this.response.write(data);
this.response.end();
}, {
where: "server"
});

关于javascript - Iron 路由器使用 Meteor.call 进行操作时会抛出 writeHead 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com