首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebAssembly: TypeError: WebAssembly实例化: Imports参数必须存在

WebAssembly: TypeError: WebAssembly实例化: Imports参数必须存在
EN

Stack Overflow用户
提问于 2017-12-31 10:43:53
回答 1查看 1.7K关注 0票数 4

我主要依靠WebAssembly developer's guide和最新的JSConf talk,努力跟上WebAssembly的步伐。我可以编译一个令牌hello world程序,并且可以查看生成的HTML页面来查看结果。到目前一切尚好。

问题:18:22的JSConf演讲建议我可以获取wasm文件,从响应中获取数组缓冲区,然后从缓冲区实例化,我应该得到一个承诺。但当我尝试这样做时--无论是在最新的Chrome稳定版、Chrome canary,还是最新的火狐浏览器中--我得到的都是一台type error

错误消息似乎是说我需要第二个"importObject“参数,尽管MDN documentation说这个参数是可选的。更糟糕的是,MDN页面几乎没有讨论该importObject的结构和内容。我已经能够从谷歌上搜索博客和github问题中收集到一些想法。看起来我可能需要一个"env“键和一个WebAssembly内存对象?

所以..。为什么导入对象是必需的,即使在文档中它是可选的?在哪里可以找到导入对象的详细文档?为什么它在JSConf talk中有效,而不适用于我?

EN

回答 1

Stack Overflow用户

发布于 2017-12-31 17:45:26

仅当您实例化的模块没有导入任何内容时,才能省略导入对象。否则,您需要提供一个包含所有所需导入的对象。例如,如果模块这样做

代码语言:javascript
复制
(import "a" "f" (func ...))
(import "a" "g" (func ...))
(import "b" "m" (memory 0))

然后您需要提供一个导入对象,如

代码语言:javascript
复制
{
  a: {f: function (...) { ... }, g: function (...) {...}},
  b: {m: new WebAssembly.Memory(...)}
}

当然,实际的导入值也可以是预定义的对象,或者更有趣的是从另一个Wasm实例导出。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48039547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档