Если у меня есть этот код
ArbFileProvider. js
const fs = require("fs");
class ArbFile {
constructor(arbFile) {
this.arbFile = arbFile;
}
async read() {
const arbFileContents = await fs.promises.readFile(this.arbFile);
this._arbFileObject = JSON.parse(arbFileContents.toString());
console.log(this._arbFileObject);
this._getRessources();
console.log(JSON.stringify(this.ressources));
console.log(JSON.stringify(this.properites));
}
_getRessources() {
const ressourcesKeys = Object.keys(this._arbFileObject).filter(
key => key.match(/^@{1,2}/g) == undefined
);
console.log("ressourcesKeys", ressourcesKeys);
this.ressources = new Map();
ressourcesKeys.forEach(key => {
this.ressources.set(key, {
value: this._arbFileObject[key],
...(this._arbFileObject[
Object.keys(this._arbFileObject).find(val => val == `@${key}`)
] || {})
});
});
console.log("ressources", JSON.stringify(this.ressources));
const propertiesKeys = Object.keys(this._arbFileObject).filter(
key => key.match(/^@@/g) != undefined
);
this.properites = new Map();
propertiesKeys.forEach(key => {
this.properites.set(key.replace(/^@@/g, ""), this._arbFileObject[key]);
});
}
}
module.exports = ArbFile;
в этой точке
console.log(JSON.stringify(this.ressources));
this.ressources - пустая карта. Я не знаю почему. В отладчике я ясно вижу, что он имеет 55 записей. Я уже пытался зарегистрировать, например, Object.keys (), но это также пустой массив.
Параметр arbFile в конструкторе - это путь к json -подобному файлу ARB.
Чтобы вызвать этот класс, я создаю новый экземпляр ArbFile, а затем вызываю read () для него.