【问题标题】:TypeError: WebAssembly Instantiation: Imports argument must be present and must be an objectTypeError:WebAssembly 实例化:Imports 参数必须存在并且必须是一个对象
【发布时间】:2018-04-03 16:46:05
【问题描述】:

我正在关注这个“hello world”教程: https://steemit.com/eos/@skenan/eos-development-for-beginners-webassembly

我得到这个错误:

TypeError: WebAssembly Instantiation: Imports 参数必须存在并且必须是一个对象

知道是什么原因造成的吗?

【问题讨论】:

  • 教程链接很有帮助,但包含您的代码的代码块将是最有帮助的。当我们不知道你有什么代码时,很难说哪里出了问题。

标签: webassembly


【解决方案1】:

您收到此错误的原因可能是: 当您启动一个 webassembly 实例时,您还需要指定导入对象。就像:

WebAssembly.instantiate(module, imports);

好吧,这里我只是举一个简单的例子来演示步骤:

    imports.env = imports.env || {}

    Object.assign(imports.env, {
      tableBase: module.tableBase,
      table: new WebAssembly.Table({
        initial: 4,
        element: 'anyfunc',
      }),
      print:function(msg){
        console.log(msg);
      }
    });
    return new WebAssembly.Instance(module, imports)

【讨论】:

  • “imports”对象从何而来?
【解决方案2】:

我无法按照教程重现此错误。这对我来说可以。您是否对 C 源代码或 JavaScript 加载代码进行了任何更改?

如果您实例化一个模块而没有为其提供所有必需的导入,则会出现您看到的错误。但是没有导入对象的模块(如教程中的模块)可以在没有导入对象的情况下实例化。文档在这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate#Parameters

【讨论】:

    猜你喜欢
    • 2018-06-10
    • 2017-12-31
    • 2013-09-09
    • 2021-08-16
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多