У меня есть HTML 5 игра. Я использую webpack / typescript для разработки.
У меня есть некоторые данные, которые я включил, используя require
, например:
const dataJson = require('scripts/data/data.json');
Я хотел бы сделать эквивалент кроме как с bson. Я попробовал наивный подход сделать что-то вроде этого
const dataJson = require('scripts/data/data.bson');
, но это, конечно, не удается, так как нет загрузчика (не будет компилироваться с currently no loaders are configured to process this file.
).
Я бы хотел чтобы затем включить файл локально, загрузить файл и затем десериализовать bson. Или я хотел бы вставить bson
как при использовании require
. Это какой-то инструмент, сгенерированный данными, поэтому он будет в файле данных.
Я не смог понять это. Я попробовал следующее. Но это приводит к тому, что result
содержит либо bits
из File
, либо что-то похожее на тип содержимого (если сделано как readAsDataURL
).
То, что я пробовал
const file = new File(['data'], 'assets/data.bson', { type: 'application/bson' });
const reader = new FileReader();
reader.onload=(theFile) => {
if (theFile.target) {
console.log(theFile.target.result);
}
} ;
reader.readAsDataURL(file);
//reader.readAsBinaryString(file);
Как правильно загрузить локальный двоичный файл? Предположительно, когда у меня есть данные, я могу просто позвонить deserialize
из пакета bson
.
Хорошо, я добавляю некоторые исправления здесь. Мой метод чтения файлов неверен. Я знаю, что File
на самом деле создаст файл. Поэтому, когда это передается FileReader
, он получает значение обоих переданных bits
.
Я обнаружил, что могу получить локальные файлы двумя способами. Я могу использовать XMLHttpRequest
, а также raw-loader
loader.
Однако, как только я это сделаю. Я не могу конвертировать содержимое в JSON, используя bson
. Любой вариант deserialize
, serialize
, parse
или stringify
имеет какую-то проблему.
У кого-нибудь есть правильный метод преобразования содержимого BSON в объект Javascript?
Обратите внимание, что BSON генерируется из python с использованием pymongo
. Мой код для генерации BSON следующий:
with open(args.output_bson, 'wb') as fp:
encoded = bson.encode(data_meta.to_dict())
fp.write(encoded)
to_dict
- словарь. Я выводил как JSON (используя json
), так и BSON.
Я также протестировал файл с bsondump
, и он действительно конвертируется в JSON. Похоже, что загруженный файл действителен.