我正在尝试使用Node fetch下载一个typescript(Node.js)文件。
根据文档和此处的堆栈溢出答案,以下代码应该可以工作:
public async downloadXMLFeed(): Promise<void>{
// function for download the file to
// a temporary location
let fileStream = fs.createWriteStream(FILE_PATH, {encoding: "utf-8"});
fetch(FILE_URL)
.then((response) => {
response.body.pipe(fileStream)
fileStream.on("finish", () => {
fileStream.close();
})
});
但我得到以下错误:
Property 'pipe' does not exist on type 'Response'
我还检查了类型文件中节点获取类型的响应。它没有管道功能。
我在这里检查了节点获取的类型定义,根据这里的接口,响应的主体似乎是一个可读的流:
export class Body {
constructor(body?: any, opts?: { size?: number; timeout?: number });
arrayBuffer(): Promise<ArrayBuffer>;
blob(): Promise<Buffer>;
body: NodeJS.ReadableStream; // This should work.
bodyUsed: boolean;
buffer(): Promise<Buffer>;
json(): Promise<any>;
size: number;
text(): Promise<string>;
textConverted(): Promise<string>;
timeout: number;
}
并有一个函数pipeTo(我从这里的留档中找到了这个。我在浏览了提到的留档后尝试运行以下代码:
public async downloadXMLFeed(): Promise<void>{
// function for download the file to
// a temporary location
let fileStream = fs.createWriteStream(FILE_PATH, {encoding: "utf-8"});
fetch(FILE_URL)
.then((response) => {
response.body.pipe(fileStream)
fileStream.on("finish", () => {
fileStream.close();
})
});
但是我得到了错误:
Argument of type 'WriteStream' is not assignable to parameter of type 'WritableStream<Uint8Array>'.
类型'WriteStream'缺少类型'WritableStream'的以下属性:锁定、中止、getWriter
现在是以下代码:
fs.createWriteStream(FILE_PATH, {encoding: "utf-8"});
返回类型为WriteStream(此处选中)的对象,该对象实现流。可写。所以我不明白为什么WriteStream对象没有提到的函数。
另外,我该如何解决这个问题?有没有一种标准的方法来下载带有node.js后端的打字稿超文本传输协议文件,我无法弄清楚?或者我在这里错过了什么。
但我得到以下错误:
Property 'pipe' does not exist on type 'Response'
此代码也会触发此错误
async function download() {
const res = await fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png');
await new Promise((resolve, reject) => {
const fileStream = fs.createWriteStream('./octocat.png');
res.body.pipe(fileStream);
res!.body!.on("error", (err) => {
reject(err);
});
fileStream.on("finish", function() {
resolve();
});
});
}
从这里拍摄。由于函数被解释为JS fetch,因此会触发该错误。
要修复此错误,请从“节点提取”中添加导入nodeFetch 并替换提取(…) 带节点蚀刻(…) 。
我一直使用加密api,因为我对密码学知之甚少。我有这个 我想验证签名,我该怎么做? (我正在使用节点v0.10.18)
我正在尝试将文件从邮递员上传到节点。js服务器。我使用multer和body parse来解析请求的主体。 用例: 当我在Postman中使用带有raw-JSON作为Body的POST请求时,一切正常,我可以完全按照Postman中提供的那样看到req.body,也可以将新的键值对分配给req.body,以便这些新变量可以在路由中的进一步中间件中使用。 但是当我尝试从邮递员上传一个带有form-d
我将如何在节点中对S3上传进行存根。js? 为了获得洞察力,我使用摩卡进行测试,使用Sinon进行存根,但我愿意改变任何事情。我有一个文件,它导出一个执行上载的函数。看起来是这样的: 如果我尝试存根或AWS。S3。原型,没有任何变化。我假设这是因为我的测试需要本身,并且每个函数都有自己的副本。 我的测试是这样的: 这个测试工作正常,但它不会将上传存根到S3,因此上传实际上要经过:X。
当用户点击下载按钮时,文件应该被下载,而不会在新标签中打开文件预览。如何实现这在反应js?
问题内容: 我收到来自api的文件网址作为响应。当用户单击“下载”按钮时,应在不打开新选项卡的文件预览的情况下下载文件。如何在React JS中实现这一目标? 问题答案: 从前端触发浏览器下载不可靠。 您应该做的是创建一个端点,该端点在被调用时将提供正确的响应头,从而触发浏览器下载。 前端代码只能做很多事情。例如,取决于浏览器,“下载”属性可能只是在新标签中打开文件。 您需要查看的响应标头可能是和
我获得了苹果推送服务的以下代码: 当我在localhost上运行服务器时,我输入pem键,服务器开始工作。 我如何将它设置为自动输入,因为我将它部署在heroku上,我会推heroku master,服务器会因为我没有输入pem密钥而失败。