Skip to content

Error when calling js from wasm,error:WebAssembly Instantiation: Import #0 module="module" error: module is not an object or function #384

Closed
@evanyuanvip

Description

@evanyuanvip

According to this #158, I tried it, but I was given an error. My code is:

declare namespace console {
   function logi(val: i32): void;
}
@external("env", "logf")
declare function logf(val: f64): void;
console.logi(123);
logf(1e10);
export function add(a: i32, b: i32): i32 {
  return a + b;
}
var importObject = {
	env: {
	    // import as @external("env", "logf")
	    logf(value) {
	      console.log("logf: " + value);
	    },
	    abort(msg, file, line, column) {
	      console.error("abort called at main.ts:" + line + ":" + column);
	    }
	},
	  console: {
	    // import as console.logi
	    logi(value) {
	      console.log("logi: " + value);
	    }
	}
}

fetch('dist/module.optimized.wasm')
    .then(res => res.arrayBuffer())
    .then(bytes => new WebAssembly.Instance(new WebAssembly.Module(bytes),importObject))
    .then(mod => {
    	console.log(mod.exports.add(503,100));
    });
(module
 (type $iv (func (param i32)))
 (type $Fv (func (param f64)))
 (type $iii (func (param i32 i32) (result i32)))
 (type $v (func))
 (import "module" "console.logi" (func $assembly/module/console.logi (param i32)))
 (import "env" "logf" (func $assembly/module/logf (param f64)))
 (memory $0 0)
 (table $0 1 anyfunc)
 (elem (i32.const 0) $null)
 (export "memory" (memory $0))
 (export "table" (table $0))
 (export "add" (func $assembly/module/add))
 (start $start)
 (func $assembly/module/add (; 2 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32)
  get_local $0
  get_local $1
  i32.add
 )
 (func $start (; 3 ;) (type $v)
  i32.const 123
  call $assembly/module/console.logi
  f64.const 1e10
  call $assembly/module/logf
 )
 (func $null (; 4 ;) (type $v)
  nop
 )
)
"scripts": {
    "build": "npm run build:untouched && npm run build:optimized",
    "build:untouched": "asc assembly/module.ts -t dist/module.untouched.wat -b dist/module.untouched.wasm --validate --sourceMap --measure",
    "build:optimized": "asc assembly/module.ts -t dist/module.optimized.wat -b dist/module.optimized.wasm --validate --sourceMap --measure --optimize"
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions