Почему импорт модуля не доступен при обратном вызове? - PullRequest
0 голосов
/ 27 апреля 2020

В приведенном ниже коде в функции обратного вызова 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'));
      }
    });
  });
}
...