Почему fs.open возвращает номер? - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь использовать узел / машинопись для чтения файла, используя этот код:

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 - это число, и как я могу его распознать как дескриптор файла?

1 Ответ

0 голосов
/ 03 октября 2018

fs.open возвращает дескриптор файла (в виде целого числа).Но createWriteStream получает <string> | <Buffer> | <URL> в качестве первого аргумента, а не дескриптор файла.

Проверка fs.write для функции, которая получает дескриптор файла и позволяетзапись в файл.

...