使用ort.js的create方法加载onnx模型报错:Fetch API cannot load file…… URL scheme “file“ is not supported.

简介: 使用ort.js的create方法加载onnx模型报错:Fetch API cannot load file…… URL scheme “file“ is not supported.

问题


在html中使用ort.js通过路径的方式加载onnx模型时,如果项目不使用代理直接本地运行,会报以下错误;

Fetch API cannot load file:///storage/……/html/js/Onnxmodel/FSC.onnx. URL scheme "file" is not supported. at /html/js/ort.min.js:4502

11:46:39.103 Uncaught (in promise) TypeError: Failed to fetch at /html/js/ort.min.js:4502

另外,在uniapp中使用webview运行本地html项目并加载onnx模型时,也会出现此错误。

分析


由于使用代理的情况下,通过路径加载模型是没有问题的,初步分析是ort.js文件加载机制原因,具体不做深入探究;所以先通过ort.js文档查看create方法:InferenceSessionFactory Create


通过文档我们可以发现,create方法不仅支持通过路径加载模型,还可以通过buffer的形式

image.png

解决


由于create方法支持buffer,我们就可以通过获取模型的buffer值的方式来加载模型,具体代码如下

可以参考文档:Sending and Receiving Binary Data

 var session;
 var oReq = new XMLHttpRequest();
 oReq.open("GET", "../js/Onnxmodel/test.onnx", true);        // 加载模型,传入路径
 oReq.responseType = "arraybuffer";        // 设置加载的文件返回类型
 oReq.onload = function () {
     var arrayBuffer = oReq.response; // 加载完模型文件后获取到对应buffer
     ort.InferenceSession.create(arrayBuffer).then(function (model) {
         session = model;        // 加载模型后返回会话
     }).catch((err)=>{
         console.log("errrrrrrrrrrrrrrrrrrrr", err)
     });
 } 
 oReq.send(null);
目录
相关文章
|
2月前
|
缓存 JavaScript 前端开发
深入浅出:使用Node.js构建RESTful API
【9月更文挑战第3天】在数字化浪潮中,后端开发如同搭建一座连接用户与数据的桥梁。本文将带领读者从零开始,一步步用Node.js搭建一个功能完备的RESTful API。我们将探索如何设计API的结构、处理HTTP请求以及实现数据的CRUD操作,最终通过一个简单的实例,展示如何在真实世界中应用这些知识。无论你是初学者还是有一定经验的开发者,这篇文章都会为你揭示后端开发的奥秘,让你轻松入门并掌握这一技能。
96 3
|
5天前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
16天前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
35 4
|
5天前
|
JavaScript 前端开发
深入理解Node.js中的异步编程模型
【10月更文挑战第39天】在Node.js的世界里,异步编程是核心所在,它如同自然界的水流,悄无声息却又无处不在。本文将带你探索Node.js中异步编程的概念、实践以及如何优雅地处理它,让你的代码像大自然的流水一样顺畅和高效。
|
9天前
|
JavaScript 前端开发 NoSQL
深入浅出:使用Node.js构建RESTful API
【10月更文挑战第35天】在数字时代的浪潮中,后端技术如同海洋中稳固的灯塔,为前端应用提供数据和逻辑支撑。本文旨在通过浅显易懂的方式,带领读者了解如何利用Node.js这一强大的后端平台,搭建一个高效、可靠的RESTful API。我们将从基础概念入手,逐步深入到代码实践,最终实现一个简单的API示例。这不仅是对技术的探索,也是对知识传递方式的一次创新尝试。让我们一起启航,探索Node.js的奥秘,解锁后端开发的无限可能。
|
1月前
|
存储 开发框架 JavaScript
Node.js实现短链接(ShortLink):shortid、epxress让URL更简单
Node.js实现短链接(ShortLink):shortid、epxress让URL更简单
55 0
Node.js实现短链接(ShortLink):shortid、epxress让URL更简单
|
1月前
|
Web App开发 JavaScript 前端开发
深入理解Node.js事件循环和异步编程模型
【10月更文挑战第9天】在JavaScript和Node.js中,事件循环和异步编程是实现高性能并发处理的基石。本文通过浅显易懂的语言和实际代码示例,带你一探究竟,了解事件循环的工作原理及其对Node.js异步编程的影响。从基础概念到实际应用,我们将一步步解锁Node.js背后的魔法,让你的后端开发技能更上一层楼!
|
1月前
|
JavaScript 前端开发 API
探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
【10月更文挑战第5天】探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
|
1月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器