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объект?

0 ответов

Другие вопросы по тегам