wasm_run icon indicating copy to clipboard operation
wasm_run copied to clipboard

Dart bindings for web issue with WasiConfig

Open renzullomichele opened this issue 3 months ago • 3 comments

I think there is something strange with Dart bindings for web: When I try to setup WasiConfig, the first execution in flutter run -d chrome return an error:
TypeError: Cannot read properties of undefined (reading 'WASI'). or if I enable captureStdErr TypeError: Cannot read properties of undefined (reading 'Fd'). simply doing "r" seems that the "refresh" initialise what failed the first time. Everything seems to work after but is very strange, because of this issue I gave up with WasiConfig and I decided to "write" by myself wasix import basic like fd_write, fd_seek, clock_time_get, proc_exit so that the config can be null... Any solution? If would be possible to expand the test with loading a valid WasiConfig would be also helpful, because I think my config is set up correctly otherwise the code wouldn't work ever.

Here seems the problem from the debugger, I'm investigating:

  WasmInstanceBuilder builder({
    WasiConfig? wasiConfig,
    WorkersConfig? workersConfig,
  }) {
    _WASI? wasi;
    if (wasiConfig != null) {
      final stdout = wasiConfig.captureStdout ? WasiStdio() : null;
      final stderr = wasiConfig.captureStderr ? WasiStdio() : null;

      final wasiWeb = WASI(
        wasiConfig.args,
        wasiConfig.env
            .map((e) => '${e.name}=${e.value}')
            .toList(growable: false),
        [
          OpenFile(WasiWebFile(Uint8List(0))), // TODO: stdin
          stdout?.fd ?? OpenFile(WasiWebFile(Uint8List(0))),
          stderr?.fd ?? OpenFile(WasiWebFile(Uint8List(0))),
          ...wasiConfig.webBrowserFileSystem.entries.map(
            (e) => PreopenDirectory(
              e.key,
              js_util.jsify(_mapWasiFiles(e.value.items)) as Object,
            ),
          ),
        ],
      );
      wasi = _WASI(wasiWeb, stdout, stderr);
    }

    return _Builder(this, wasi, workersConfig);
  }

renzullomichele avatar May 02 '24 15:05 renzullomichele