Как прочитать файл WebAssembly JavaScript из локальной файловой системы с помощью встроенных инструментов

1

Я ищу способ структурирования моего теста JavaScript и чтения простого двоичного файла WebAssembly, т.е. Wasm из локальной файловой системы, то есть не в приложении браузера, без использования сторонних инструментов, таких как узел. До сих пор я обнаружил, что это можно сделать с помощью узла fs object. но я не хочу загружать такой огромный инструмент только для чтения одного файла. т.е.

Я ищу способ заменить вызов узла следующим образом

var file = fs.readFileSync('myTestFile.wasm');
var buffer = new Uint8Array(file).buffer;

как это будет выглядеть в JavaScript без узла и без браузера?

Теги:
webassembly

2 ответа

1
Лучший ответ

Все движки JavaScript имеют не-браузерную сборку исходного кода, который выполняется в командной строке. АО имеет jsc, V8 имеет d8, SpiderMonkey js и ChakraCore ch.

Они используются каждым поставщиком браузеров для тестирования, и неизбежно нам иногда нужно читать ASCII или двоичные файлы. Там, к сожалению, нет стандарта для такой функциональности, но я обнаружил, что это работает для моей цели:

const readAsBinary = filename => {
if (typeof process === 'object' && typeof require === 'function') {
    const binary = require('fs').readFileSync(file);
    return !binary.buffer ? new Uint8Array(binary) : binary;
} else
    return typeof readbuffer === 'function'
        ? new Uint8Array(readbuffer(file))
        : read(file, 'binary');
};

const instance = new WebAssembly.Instance(new WebAssembly.Module(readAsBinary(filename)), {});

Это будет работать только в node.js или оболочке ядра, а не в браузере.

  • 0
    Здравствуйте, JS, но для этого требуется узел, если я правильно читаю это, и я не хочу использовать узел, т.е. хочу простой простой Java-скрипт
  • 0
    @ Tito no, он обнаруживает node.js и использует его, если он доступен только. В противном случае он обнаруживает оболочки, которые представляют readbuffer , и если это не так, он использует read .
Показать ещё 2 комментария
0

Если вы base64-кодируете файл.wasm, вы можете включить его непосредственно в JavaScript следующим образом:

Module.wasmBinaryFile = "data:application/wasm;base64,AGFzbQEAAAAByQ/AAWACf38Bf2A...";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню