Vue.js 如何在Vue中加载webassembly文件?

Vue.js 如何在Vue中加载webassembly文件?,vue.js,jwasm,Vue.js,Jwasm,我使用以下命令编译了C代码emcc add.C-o js_pipeoping.js-s-s EXTRA_EXPORTED_RUNTIME_方法=['ccall','cwrap']-s moduleize=1 这是我的Vue组件代码- public instance:any = { ready: new Promise(resolve => { Module({ onRuntimeInitialized() { thi

我使用以下命令编译了C代码
emcc add.C-o js_pipeoping.js-s-s EXTRA_EXPORTED_RUNTIME_方法=['ccall','cwrap']-s moduleize=1

这是我的Vue组件代码-

 public instance:any = {
      ready: new Promise(resolve => {
        Module({
          onRuntimeInitialized() {
            this.instance = Object.assign(this, {
              ready: Promise.resolve()
            });
            resolve();
          }
        });
      })
    };


    public draw_outline() {
       this.instance.ready
      .then(_ => this.result_web = this.instance.addTwoNumbers(2,2));
    }
单击文本元素时,会调用draw_outline

这就是我得到的错误-

所以,在这个错误之后,我去生成文件,只是将导出添加到模块中,这个错误就消失了。但现在我在C“addTwoNumbers”中的函数并没有从实例中调用

如果我打印实例的值
有人知道如何从这里开始吗?

我想,在编译时,我需要使用
使用\u ES6\u IMPORT\u META=0
标志,以便WebAssembly模块将对不识别导入样式的系统使用IMPORT.META.url代码行的旧版本。因此,该命令看起来像emcc add.c-o js_pipeoping.js-s EXTRA_EXPORTED_RUNTIME_METHODS=['ccall','cwrap']-s ENVIRONMENT='web,worker'-s EXPORT_ES6=1-s modulate=1-s USE_ES6_IMPORT_META=0

这是我的更新代码-

 Module().then(myModule => {  
        const result = myModule.ccall('addTwoNumbers',
            'number',
            ['number', 'number'],
            [4, 6]);
         console.log("Value from wasm file", result);
        });
我的配置文件-

const path = require('path');
const contentBase = path.resolve(__dirname, '..', '..');

module.exports = {
    configureWebpack: config => {

        config.devServer = {
            before(app) {
                // use proper mime-type for wasm files
                app.get('*.wasm', function (req, res, next) {
                    var options = {
                        root: contentBase,
                        dotfiles: 'deny',
                        headers: {
                            'Content-Type': 'application/wasm'
                        }
                    };
                    res.sendFile(req.url, options, function (err) {
                        if (err) {
                            next(err);
                        }
                    });
                });
            }
        }   
    },
}

它位于我在单击事件时调用的函数内部。如果有人感兴趣,我可以详细说明整个过程。对任何人来说都不应该花这么多时间,我希望这能帮助其他一直在寻找解决方案的人。我意识到我在这篇文章中没有正确地说明这个问题,我将很快以正确的方式更新这里的所有内容。

可能最好从浏览器进行调试,因为错误似乎不是由代码粘贴产生的。您有什么方法吗?我是wasm的新手,已经使用了2天。进入开发者工具(F12),在“源代码”选项卡内搜索项目文件,放置断点并调试。如果您使用的是chrome,那么您可以安装Vue.js devtools,也可以单步执行代码。好的,我将尝试一下。但是你对最后一张截图有什么看法吗?我的意思是,输出是什么,或者你认为它是什么