I'm trying to import a WebAssembly module (written in Rust
and compiled using wasm-pack
) in my Vue project. What I did was create a project:
vue-cli create my-vue-webasm-proj
I chose Vue 2.之后我像这样修改了我的main.js
(添加了async beforeCreate()
):
/* 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')
在 npm runserve
之后我收到此错误:
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)
如何修复它?
我尝试将此配置添加到 webpack.config.js
中,正如所说的那样,但没有成功:
module.exports = { experiments: { asyncWebAssembly: true, importAsync: true } }
我的 package.json
如果如下:
... "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" }, ...
A bit late to answer, but maybe it will help someone.