首页 > 解决方案 > 如何在 webpack 捆绑之前获取文件的 __dirname

问题描述

我正在制作一个处理序列化和动态导入的应用程序:我用这样的东西序列化某个类的对象

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返回相对于分发文件夹的路径,其结构与我的源文件夹不同。

所以。如何在运行时获取 webpack 处理之前的文件路径?该问题的替代解决方案显然是受欢迎的。

干杯

标签: node.jstypescriptwebpack

解决方案


推荐阅读