node.js - 如何在 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 处理之前的文件路径?该问题的替代解决方案显然是受欢迎的。
干杯
解决方案
推荐阅读
- keycloak - 如何从 keycloak 中的自定义客户端获取角色?
- c++ - STM(软件事务内存)C++ 最先进的技术
- java - mybatis 拦截器冗余换行
- excel - Excel - 仅使用部分文本在矩阵中搜索文本
- zeromq - 无法在 ubuntu 19.04 上安装 libzmq3-dev
- mysql - 在 MySQL 中没有 Group By
- aws-lambda - 如果您使用投影表达式在 DynamoDb 中获取项目,如果表达式中的属性可能不存在,会发生什么情况
- r - 如何在我的 Windows 而不是 R studio 上访问 base R?
- asp.net - 无法使用 GetDelegateForFunctionPointer 注册 COM DLL
- css - 如何悬停不同大小的图片