emscripten: FS недоступен в preRun
Я портирую существующий проект и статически связываю его с-s FORCE_FILESYSTEM
,MODULARIZE
и-s "EXTRA_EXPORTED_RUNTIME_METHODS=['FS']"
.
Я хочу подключить его к BrowserFS , чтобы создавать файлы входных данных перед запуском кода и читать выходные файлы после выполнения. Вот как я создаю экземпляр модуля:
// create Module object
const myModule = new Module({
arguments: this.args.split(" "),
fs: BFS,
print: (text: string) => {
txtBuf += text + '\n';
},
preRun: () => {
console.log("preRun");
console.log(FS);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
FS.createFolder(FS.root, 'data', true, true);
},
postRun: () => {
console.log("postRun");
this.inputs.push({ q: this.args, re: txtBuf });
this.args = "";
}
});
// resolve Module promise
myModule.then(
... whatever...
)));
});
Теперь проблема в том, что хотя FS доступна внутриpreRun
метод это функция, и я не могу вызватьmount
или любые другие fs.methods на нем видимо. Например, в приведенном выше коде вызовFS.createFolder
приводит к следующей ошибке:
Uncaught (in promise) TypeError: browserfs_dist_node_core_FS__WEBPACK_IMPORTED_MODULE_6__.default.createFolder is not a function
Если я сделаюconsole.log(FS)
вот что я вижу:
ƒ FS() {
/* tslint:enable:variable-name */
this.F_OK = 0;
this.R_OK = 4;
this.W_OK = 2;
this.X_OK = 1;
this.root = null;
this.fdMap = {};
this.nextFd = 100;
}
Итак, что мне делать, чтобы смонтировать экземплярBrowserFS
файловая система с моейModule
объект?