Как получить __dirname файла перед упаковкой веб-пакета - PullRequest
0 голосов
/ 06 октября 2019

Я создаю и приложение, которое имеет дело с сериализацией и динамическим импортом: я сериализирую объекты некоторого класса с чем-то вроде этого

fs.write('savename.json', JSON.stringify(someObject.getSerializable()), () => console.log('done'))

таким образом, хотя мне не удается сохранить имя конструктора илилюбую информацию о прототипе или материале, поэтому я сохраняю имя конструктора в свойстве type, например:

export default class SomeObjectClass {

  // [...]

  getSerializable(): string {
    return {
      type: this.constructor.name,
      ...this
    }
  }
}

, но таким образом я не сохраняю его полный путь, поэтому при попыткединамически импортировать его с

const plainObject = fs.readFileSync('savename.json').toString();
const ctor = await import(plainObject.type);
const object = new ctor.default(); // this fails

, это просто не удается, потому что модуль находился во вложенной папке где-то в моем проекте. Я попытался объединить __dirname следующим образом

export default class SomeObjectClass {

  // [...]

  getSerializable(): string {
    return {
      type: path.join(__dirname, this.constructor.name),
      ...this
    }
  }
}

, но это не работает, потому что после объединения __dirname возвращает путь относительно папки распространения, структура которой отличается от моей исходной папки.

Итак. Как получить путь к файлу до обработки веб-пакета во время выполнения? Альтернативные решения проблемы, безусловно, приветствуются.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...