В приведенном ниже коде в функции обратного вызова analyse
равно undefined
, поэтому я присваиваю analyse
значение a
, чтобы код работал. Зачем мне это делать? Почему импортированный analyse
недоступен для обратного вызова через лексическую область видимости?
Я использую веб-пакет для объединения файлов и Babel для переноса Typescript.
import { analyse } from 'chardet';
const chardetEncodingsSupportedByFS = ['UTF-8', 'UTF-16LE'];
const a = analyse;
export function readFile(path: string): Promise<string> {
return new Promise<string>((resolve, reject) => {
fs.readFile(path, async (err, buffer) => {
if (err) {
reject(new Error(`Error reading file: ${err}`));
}
const supportedEncoding = a(buffer).find(match =>
chardetEncodingsSupportedByFS.includes(match.name)
);
if (supportedEncoding) {
resolve(buffer.toString(supportedEncoding.name));
} else {
reject(new Error('File could not be read, unknown encoding'));
}
});
});
}