为什么fs.open返回一个数字?

时间:2018-10-03 00:56:25

标签: node.js typescript fs

我正在尝试使用以下代码使用节点/打字稿读取文件:

refs/for/<branch>

但是当我尝试使用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'

node.js文档说const writeStream = createWriteStream(fd, {返回一个文件描述符,而不是一个数字,那么为什么打字稿认为fs.open是一个数字,我怎样才能将其识别为文件描述符?

1 个答案:

答案 0 :(得分:1)

fs.open返回文件描述符(作为整数)。但是createWriteStream收到一个<string> | <Buffer> | <URL>作为它的第一个参数,而不是一个文件描述符。

检查fs.write中是否有接收文件描述符并允许写入文件的函数。