node.js - Node.js http 响应结束事件从未触发
问题描述
谁能告诉我为什么它永远不会触发结束事件?我怎样才能使它可行?
代码:
const http = require('http');
const fs = require('fs');
const file = fs.createWriteStream("mqdefault.jpg");
const request = http.get("http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg", function(response) {
response.on('data', function(chunk){
response.pipe(file);
process.stdout.write('Received data\n');
})
response.on('end', function(){
response.pipe(file);
process.stdout.write('All data received');
})
}).on('error', (e) => {
console.error(`Got error: ${e.message}`);
});
解决方案
使用file.write(chunk)而不是管道。和file.end完成写入。
const http = require('http');
const fs = require('fs');
const file = fs.createWriteStream("mqdefault.jpg");
const request = http.get("http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg", function(response) {
response.on('data', function(chunk){
file.write(chunk);
process.stdout.write('Received data\n');
})
response.on('end', function(){
file.end();
process.stdout.write('All data received');
})
}).on('error', (e) => {
console.error(`Got error: ${e.message}`);
});
推荐阅读
- reactjs - Typeorm + Firebase 功能:部署后“在任何 orm 配置文件中都找不到连接选项”
- c# - Rider 说无法更新路径“/usr/share/dotnet/dotnet”中的 dotnet 核心
- python - 删除字符串python中的字符组合
- azure-devops - Azure DevOps 将工作项链接到强制提交消息
- python - Python - 类似单词的字符串检查和替换
- bash - 我怎样才能将此 egrep 脚本更改为 zgrep 脚本并且仍然可以工作?
- python - 在 Python 中将日期转换为 %y-%m-%d 格式
- f# - 如何将项目列表转换为列表
- 在 F#
- python - 在循环中追加列表的最有效方法
- excel - Excel 建立一个公式来查找记录并匹配该值,如果找到则返回一个值 YES