node.js - 为什么 fs.open 返回一个数字?
问题描述
我正在尝试使用节点/打字稿来使用以下代码读取文件:
const openFile = util.promisify(fs.open);
write(data: Buffer, index: number) {
if (!checkPieceIntegrity(data, this.pieceMap[index])) {
return false;
} else {
return openFile(this.path, "r+")
.then(fd => {
const writeStream = createWriteStream(fd, {
flags: "r+",
start: index * this.pieceLength,
autoClose: true,
})
return util.promisify(writeStream.write)(data);
})
}
}
但是当我尝试编译时,tsc
我得到了错误:
Argument of type 'number' is not assignable to parameter of type 'PathLike'
.
参考这一行:
const writeStream = createWriteStream(fd, {
.
node.js 文档说fs.open
返回一个文件描述符,而不是一个数字,那么为什么打字稿认为fd
是一个数字,我怎样才能让它识别为一个文件描述符?
解决方案
fs.open返回一个文件描述符(作为一个整数)。但是createWriteStream接收 a<string> | <Buffer> | <URL>
作为它的第一个参数,而不是文件描述符。
检查fs.write是否有接收文件描述符并允许写入文件的函数。
推荐阅读
- javascript - 如何使用 200 页 HTML 和 CSS 创建演示幻灯片
- database - 针对 C# API 的性能和可扩展性的数据库选择
- node.js - 单行命令迭代和查找多个项目并更新 Mongoose?
- javascript - 响应 Twilio 的外部 IVT
- c# - 如何在桌面应用程序中使用 SQL Server Compact 版本作为嵌入式源以及在应用程序本身中备份?
- javascript - Javascript推入两个for循环覆盖数组
- java - java-NoClassDefFoundERROR: LogManager
- php - 如何根据有array_map的PHP中的条件交换元素?
- json - Pandas:将 JSON 转换为 Pandas 数据框
- java - JDK 8 可选功能