收藏
回答

WXWebAssembly.instantiate方法的第一个参数,如何通过远程下载本地实例化?

根据报错提示,第一个参数需要传入一个绝对路径的.wasm文件,如pages/index/hello.wasm

如果需要将远程的wasm下载到本地再实例化应该如何实现呢,报错明确提示了,不能以wxfile://或http的文件路径开头,所有还有其他读取存储后文件绝对路径的且获取出来不为wxfile:前缀的绝对路径,api可以调用吗?

wasm资源文件超出了2m,希望可以走远程下载到本地再实例化

const info = {};
const cloudWasm = 'https://cdn.com/hello.wasm'
wx.downloadFile({
  url:cloudWasm,
  success:res=>{
      const {tempFilePath} = res;
      // 如何将tempFilePath转成绝对路径呢?
    const fs = wx.getFileSystemManager();
      const { env:{ USER_DATA_PATH } } = wx; // 当前用户设备的环境目录
      const wasmfilename = tempFilePath.slice(tempFilePath.lastIndexOf('/') + 1);// 提取文件名和后缀
     fs.saveFileSync(tempFilePath, wasmdir + wasmfilename);
     
      const wasmdir = USER_DATA_PATH + "/wasm/"// 在当前用户环境下新建一个目录
      const obsoluteWasmFilePath = `${tempFilePath}/${wasmfilename}`;

      WXWebAssembly.instantiate(obsoluteWasmFilePath,info).then(suc=>{
           console.log('初始化成功') 
      },err=>{
           console.log('初始化失败')  
      })
    
          }
    }  )


回答关注问题邀请回答
收藏

2 个回答

  • 小程序技术专员-binnie
    小程序技术专员-binnie
    1天前

    原生  WebAssembly 不再提供,用下面的接口


    WASM 参考文档:


    1. WXWebAssembly.instantiate(path, imports) 方法。和官方用法区别是第一个参数只能为包内路径,同时支持传包含 wasm.br 后缀的 brotli 压缩文件路径

    2. 支持 WXWebAssembly.Memory

    3. 支持 WXWebAssembly.Table

    4. 支持 WXWebAssembly.Global

    5. export 支持函数、Memory、Table,暂不支持 Global


    1天前
    有用 1
    回复 4
    • 寸许月光
      寸许月光
      20小时前
      好嘞,我们在编译胶水代码的初始化过程中,遇到一个比较棘手的问题多线程真机不支持问题,可以给一点方向性指引吗?
      问题描述:
      1、正常我们编译opencv+ncnn到wasm修改胶水代码后,在mac的微信开发者工具下,可以正常运行,不报错,但是到真机调试的时候报错Uncaught (in promise) FrameworkError
      <CompileError: WebAssembly.instantiate(): Invalid opcode (enable with --experimental-wasm-threads) @+3819



      2、8.0.1版本的opencv我们编译到真机是可以运行成功的,8.0.2之后由于换成包装函数WXWebAssembly的实例化WXWebAssembly.instantiate,就报了上面的多线程支持报错。应该你们真机环境是从8.0.2开始不支持多线程了


      定位方法:
      1、我们编译opencv到wasm时手动关掉了的多线程支持USE_PTHREADS=0,但是编译后的wasm中还是会触发多线程,具体哪些特性会触发多线程我们还没有定位到


      2、我们编写一个简单的c++的hello world到wasm真机执行可以正常运行,不报错,单独编译c语言版的ncnn到wasm也不报错


      提问:
      1、想知道你们安卓的定制V8内核与开发者工具的内核有什么差别吗?
      2、由于我们的算法库对opencv的依赖较高,目前还是主要从解决opencv的方向下手
      3、如果最终还是编译不成功,才可能考虑重写C++的算法库去编译wasm
      20小时前
      回复
    • 寸许月光
      寸许月光
      14小时前
      已经可以跑起来了
      14小时前
      回复
    • 小程序技术专员-binnie
      小程序技术专员-binnie
      已追加反馈信息

      你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的微信号。

      待楼主反馈
    • 小程序技术专员-binnie
      小程序技术专员-binnie
      11小时前回复寸许月光
      点上面的按钮反馈下微信号呢,我们沟通下看看
      11小时前
      回复
  • 寸许月光
    寸许月光
    04-07

    WXWebAssembly.instantiate方法,如何通过远程下载wasm文件且存储读取为非wxfile://开头的绝对路径,实例化成功????

    04-07
    有用
    回复
登录 后发表内容
问题标签