I am trying to import a webassembly module (written in Rust
and compiled with wasm-pack
) in my Vue project. What I did is I created a project with:
vue-cli create my-vue-webasm-proj
I chose Vue 2. And after that I modified my main.js
like this (async beforeCreate()
is added):
/* main.js */
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
new Vue({
render: h => h(App),
async beforeCreate() {
const wlib= await import('my-webasm-lib')
console.log(wlib)
},
}).$mount('#app')
After npm run serve
I get this error:
Module parse failed: Unexpected character '' (1:0)
The module seem to be a WebAssembly module, but module is not flagged as WebAssembly module for webpack.
BREAKING CHANGE: Since webpack 5 WebAssembly is not enabled by default and flagged as experimental feature.
You need to enable one of the WebAssembly experiments via 'experiments.asyncWebAssembly: true' (based on async modules) or 'experiments.syncWebAssembly: true' (like webpack 4, deprecated).
For files that transpile to WebAssembly, make sure to set the module type in the 'module.rules' section of the config (e. g. 'type: "webassembly/async"').
(Source code omitted for this binary file)
How do I fix it?
I tried to add this configuration into webpack.config.js
as it is said without any success:
module.exports = {
experiments: {
asyncWebAssembly: true,
importAsync: true
}
}
My package.json
if following:
...
"dependencies": {
"core-js": "^3.8.3",
"my-webasm-lib": "file:../my-webasm-lib/my-webasm-lib-pkg",
"vue": "^2.6.14"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3",
"vue-template-compiler": "^2.6.14"
},
...
It's a little bit late answer, but maybe may help to someone.
module.exports = {
runtimeCompiler: true,
configureWebpack: {
externals: {
experiments: {
asyncWebAssembly: true,
},
},
},
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With