Тип «ReadStream» не может быть назначен типу «string».ts(2322)
Я пытаюсь запустить следующий код:
const uploadParams = {Bucket: bucketName, Key: '', Body: ''};
const file = '/home/a/bars/img1.png';
const fileStream = fs.createReadStream(file);
fileStream.on('error', function(err) {
console.log('File Error', err);
});
uploadParams.Body = fileStream;
var path = require('path');
uploadParams.Key = path.basename(file);
Но я получаю следующую ошибку вuploadParams.Body = fileStream;
строка кода:
Type 'ReadStream' is not assignable to type 'string'.ts(2322)
Как я могу это исправить?
1 ответ
Просто укажите, какого типа объект-ключBody
можно держать так:
{ Bucket: string; Key: string; Body: string | ReadStream }
Решение:
import fs, { ReadStream } from "fs";
import path from "path";
const bucketName = '';
const uploadParams: { Bucket: string; Key: string; Body: string | ReadStream } = {
Bucket: bucketName,
Key: '',
Body: '',
};
const file = '/home/a/bars/img1.png';
const fileStream = fs.createReadStream(file);
fileStream.on('error', function (err) {
console.log('File Error', err);
});
uploadParams.Body = fileStream;
uploadParams.Key = path.basename(file);
Или если вы используетеrequire
вы можете использоватьtypeof
ключевое слово:
// { Bucket: string; Key: string; Body: string | typeof ReadStream }
const { ReadStream } = require("fs");
const fs = require("fs");
const path = require("path");
const bucketName = '';
const uploadParams: { Bucket: string; Key: string; Body: string | typeof ReadStream } = {
Bucket: bucketName,
Key: '',
Body: '',
};
const file = '/home/a/bars/img1.png';
const fileStream = fs.createReadStream(file);
fileStream.on('error', function (err) {
console.log('File Error', err);
});
uploadParams.Body = fileStream;
uploadParams.Key = path.basename(file);
Хотя мне кажется странным, что вы используете пустую строку для хранения потока. Почему бы просто не сделать?
const uploadParams: { Bucket: string; Key: string; Body: null | ReadStream } = {
Bucket: bucketName,
Key: '',
Body: null,
};