关于WebAssembly一些常见报错的问题分析

使用webassembly.instantiate或者instance加载wasm文件时

加载的时候可能会有下面这些报错

TypeError:Imports argument must be present and must be a object

官方函数说明:instantiate(bufferArray,importObject);其中importObject可以省略,但是省略的前提是在wasm文件中没有使用到导入函数或导入属性。如果报这个错了,说明一定是用了导入函数或属性,所以你一定要传importObject进去。这个importObject提供了你在wasm中引用的函数或属性。当然你可能会问那我不知道提供了哪些函数怎么办,当你传一个空的对象进去时一定会发生下面一个错误。

Uncaught (in promise) LinkError: Import #0 module="\*\*" function="\*\*" error:function import requires a callable

这个错误就是告诉你,你的导入对象虽然有了但是缺少他要的东西所以还是不能运行具体是什么上面也会写。还有如果你是使用emcc编译的话,你编译会生成 ***.js和***.wasm。你直接加载js文件就可以啦,这个js文件会自动编译这个wasm文件的。而且github上面作者是建议你使用这个js文件来加载wasm文件而不是你自己去加载wasm文件。

Tips:
编译的时候加上 -s SINGLE_FILE=1 -o target.js 可以生成单js文件

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值