support for webassembly with wasm-bindgen?



  • I’ve tried for a while now to import a wasm-bindgen project generated with wasm-pack from rust code into a quasar project. I’ve managed to do so successfully from another pure vue/webpack project, but for some reason It’s not working in quasar. I’m new to both webassembly and quasar, so I might be missing something obvious…

    The code is currently in a boot file:

    import('open-optics-module-model').then(oom => {
      console.log("working!");
    });
    

    package.json for project:

    {
      "name": "open-optics-module",
      "version": "0.0.1",
      "description": "Tool for experimenting with geometrical optics.",
      "productName": "Open Optics Module",
      "author": "Samuel Selleck <sellecksamuel@gmail.com>",
      "private": true,
      "scripts": {
        "test": "echo \"No test specified\" && exit 0"
      },
      "dependencies": {
        "@quasar/extras": "^1.0.0",
        "core-js": "^3.6.5",
        "open-optics-module-model": "file:../pkg",
        "pixi.js": "^5.3.3",
        "quasar": "^1.0.0"
      },
      "devDependencies": {
        "@quasar/app": "^2.0.0"
      },
      "browserslist": [
        "last 10 Chrome versions",
        "last 10 Firefox versions",
        "last 4 Edge versions",
        "last 7 Safari versions",
        "last 8 Android versions",
        "last 8 ChromeAndroid versions",
        "last 8 FirefoxAndroid versions",
        "last 10 iOS versions",
        "last 5 Opera versions"
      ],
      "engines": {
        "node": ">= 10.18.1",
        "npm": ">= 6.13.4",
        "yarn": ">= 1.21.1"
      }
    }
    

    package.json for generated wasm-pack project (followed rust tutorial):

    {
      "name": "open-optics-module",
      "collaborators": [
        "Samuel Selleck <sellecksamuel@gmail.com>"
      ],
      "version": "0.1.0",
      "files": [
        "open_optics_module_bg.wasm",
        "open_optics_module.js",
        "open_optics_module.d.ts"
      ],
      "module": "open_optics_module.js",
      "types": "open_optics_module.d.ts",
      "sideEffects": false
    }
    

    The log:

    Uncaught (in promise) TypeError: wasmExports is undefined
        wasm vendor.js:2108
        __webpack_require__ app.js:854
        fn app.js:151
        <anonymous> open_optics_module_bg.js:1
        <anonymous> open_optics_module_bg.js:73
        js vendor.js:2086
        __webpack_require__ app.js:854
        fn app.js:151
        <anonymous> open_optics_module.js:1
        js vendor.js:2074
        __webpack_require__ app.js:854
        fn app.js:151
        promise callback*__webpack_exports__.default/< open-optics-module-model.js:6
        default open-optics-module-model.js:5
        start client-entry.js:84
        async* client-entry.js:129
        js app.js:1022
        __webpack_require__ app.js:854
        fn app.js:151
        0 app.js:1176
        __webpack_require__ app.js:854
        checkDeferredModules app.js:46
        <anonymous> app.js:997
        <anonymous> app.js:1000
    

    haven’t changed quasar.config.js (other than adding the boot file).

    The problem dissapears if I don’t include the .wasm file, but that defeats the purpose…

    Thanks in advance!

    /Samuel



  • @Samzelot

    Hard to say without code. It would probably help if you post a repo of your successful pure vue/webpack project. And a repo of your failed quasar project would probably also help.


Log in to reply