我正在制作和处理序列化和动态导入的应用程序:我使用类似这样的东西序列化某些类的对象
static void cosSin(double angle) {
double cos = Math.cos(angle);
double sin = Math.sin(angle);
System.out.printf("%.4f : %.1f %.1f \n", angle, cos, sin);
}
public static void main(String[] args) {
System.out.println("Radians: (cos, sin)");
double angle = 0.0;
double piDivideTwo = Math.PI / 2.0;
double pi = Math.PI;
cosSin(angle); // 0,0000 : 1,0 0,0
cosSin(piDivideTwo); // 1,5708 : 0,0 1,0
cosSin(pi); // 3,1416 : -1,0 0,0
}
这样,尽管我没有保存构造函数名称或有关原型或东西的任何信息,所以我将构造函数名称保存在属性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
}
}
}
后,返回相对于分发文件夹的路径,该文件夹的结构与我的源文件夹不同。
所以。如何在运行时进行Webpack处理之前获取文件路径? 显然,我们欢迎其他解决方案。
欢呼