记录vite项目中Cornerstone的兼容问题(持续更新)

🔎 在vite项目中打包提示错误

ESM integration proposal for Wasm" is not supported currently.

⛳️ 问题描述

Error: Could not load /home/xxx/xxx/node_modules/@icr/polyseg-wasm/dist/ICRPolySeg.wasm (imported by node_modules/@icr/polyseg-wasm/dist/index.js): “ESM integration proposal for Wasm” is not supported currently. Use vite-plugin-wasm or other community plugins to handle this. Alternatively, you can use .wasm?init or .wasm?url. See https://vitejs.dev/guide/features.html#webassembly for more details.

🎯 临时解决方案

import { defineConfig } from "vite";export default defineConfig({resolve: {alias: {"@cornerstonejs/tools": "@cornerstonejs/tools/dist/umd/index.js"},},
});

📡 官方进度

关注:https://github.com/cornerstonejs/cornerstone3D/issues/1071


🔎 在vite项目中由于循环引用导致影像无法显示的问题

failed Error: loadImageFromImageLoader: no image loader for imageId

⛳️ 问题描述

在vite项目中安装1.4X.X+版本的Cornerstone时,一直会有以下报错信息:
在这里插入图片描述

📡 问题定位

在代码调试时,可以看到以下调试信息,在ImageLoader文件中,imageLoaders变量是一个模块内的全局变量,通过调用注册函数初始化

  • imageLoaders 变量声明(Cornerstone源码中实现)
// node_modules/@cornerstonejs/core/src/loaders/imageLoader.ts
export function registerImageLoader(scheme: string,imageLoader: ImageLoaderFn
): void {// imageLoaders 为全局变量,通过调用 registerImageLoader 这个函数初始化imageLoaders[scheme] = imageLoader;
}
  • imageLoaders 初始化(项目代码中实现,即调用上面声明的这个函数)
cornerstone.imageLoader.registerImageLoader('wadouri', cornerstoneDICOMImageLoader.wadouri.loadImage);

在执行完该步骤后,imageLoaders中应该含有’wadouri’属性的对象,但是在debugger中查看 imageLoaders 依旧为undefined
在这里插入图片描述

查看调试中的imageLoaders变量,发现文件指向 node_modules/@cornerstonejs/streaming-image-volume-loader/node_modules/@cornerstonejs/core/src/loaders/imageLoader.ts, 即 我们执行的上述【imageLoaders 初始化】过程是初始化了项目node_modules中的imageLoaders变量,但是在渲染dicom文件时,调用的是@cornerstonejs/streaming-image-volume-loader 库中自己node_modules下的imageLoaders变量。

✨✨✨ 结论:Vite 基于 ES 模块,每个模块都是在其自己的作用域中执行的所以在不同的目录中初始化的变量只能在自己的作用域中生效。

🎯 解决方案

  1. 确保两个库使用的是同一个 @cornerstonejs/core 实例:即@cornerstonejs/core 在整个项目中只被加载一次,可以通过设置 package.jsonresolutions 字段来强制使用同一版本。
{"resolutions": {"@cornerstonejs/core": "^版本号"}
}
  1. 配置 Vite 以确保正确的依赖解析
// vite.config.js
import { defineConfig } from 'vite';export default defineConfig({resolve: {alias: {'@cornerstonejs/core': require.resolve('@cornerstonejs/core'),},},
});

通过以上配置解决循环依赖中,模块变量无法访问的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录】【算法训练营】【第66天】 [卡码95]城市间货物运输II [卡码96]城市间货物运输III

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 66,周五,ding ding~ [卡码95] 城市间货物运输II 题目描述 卡码95 城市间货物运输II 解题思路 前提: 思路: 重点: 代码实现 C语言 …

数据结构(Java):队列Queue集合力扣面试OJ题

1、队列 1.1 队列的概念 队列是一个特殊的线性表,只允许在一端(队尾)进行插入数据操作,在另一端(对头)进行删除数据。队列具有先进先出FIFO(First In First Out)的特性。 入队:数据只能从队尾…

有奖竞猜!斗牛士军团与法兰西骑士的终极之战,谁将笑傲欧洲之巅?

痛快看球,畅玩游戏,AGON爱攻带你进入酣畅淋漓的足球世界! 7月15日,绿茵赛场硝烟再起,两支身披荣光的王者之师,一路过关斩将,最终会师决赛。一场万众瞩目的巅峰对决即将拉开帷幕,究竟…

LabVIEW前面板占满整个屏幕(转)

希望在运行一个LabVIEW程序时,它的前面板能够占据整个屏幕,且不显示Windows的任务栏或其他任何的LabVIEW菜单选项。怎样才能实现这一功能? 您可以通过手动配置或编程的方式实现该功能。 手动配置VI属性 您可以通过以下操作,将…

导入项目,JAVA文件是咖啡杯图标

问题 从图中可以看到,JAVA文件是咖啡杯图标 原因 项目没有识别为MAVEN项目 解决办法 进入pom.xml文件,右键点击Add as Maven Project即可

Spring MVC入门3

看完这篇博客你能学到什么 理解JSON的使用理解注解PathVariable理解解注解RequestPart理解cookie和Session的基本概念理解cookie和Session的区别 如果想真正掌握,还需要自己勤加练习。 正文 JSON JSON概念 JSON:JavaScript Object Notation 【JavaS…

【YOLOv8】 用YOLOv8实现数字式工业仪表智能读数(一)

上一篇圆形表盘指针式仪表的项目受到很多人的关注,咱们一鼓作气,把数字式工业仪表的智能读数也研究一下。本篇主要讲如何用YOLOV8实现数字式工业仪表的自动读数,并将读数结果进行输出,若需要完整数据集和源代码可以私信。 目录 &…

gin源码分析

一、高性能 使用sync.pool解决频繁创建的context对象,在百万并发的场景下能大大提供访问性能和减少GC // ServeHTTP conforms to the http.Handler interface. // 每次的http请求都会从sync.pool中获取context,用完之后归还到pool中 func (engine *Engin…

c语言位操作符相关题目之交换两个数的值

文章目录 一、题目二、方法11,思路2,代码实现 三、方法21,思路2,代码实现 四、方法31,思路2,代码实现 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 实现两个变量的…

小米起诉“小米”商标侵权,索赔500万!

近日浙江丽水有家叫小米的公司,因为商标侵权被小米科技起诉索赔500万,需要变更企业名称,官网也不能用“小米智能大家居”等,还有其它的赔偿,普推知产商标老杨分析,“小米智能大家居”“小米”,后…

交易平台Zero Hash现已支持SUI交易

Zero Hash是一家领先的加密货币和稳定币基础设施平台,为包括Stripe、Shift4和Franklin Templeton在内的公司提供支持,现在也支持对SUI的访问。此举使Zero Hash的客户及其终端用户能够使用SUI。 提供API和SDK以及专注于无缝连接法币、加密货币和稳定币的…

读人工智能全传11人工智能会出什么错

1. 人工智能会出什么错 1.1. 一些报道是公正合理的,不过坦白地说,大部分报道都愚蠢得无可救药 1.2. 一些报道颇有知识性和引导性,而大部分则是杞人忧天式的恐吓 1.3. 滑稽的报道迎合了大众对人工智能的“终结者式恐惧” 1.3.1. 我们创造出…

html设计(两种常见的充电效果)

第一种 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

【FineGrip】全光学感知:一种新的通用遥感图像解释任务和细粒度数据集(IEEE TGRS 2024)

摘要 目前的遥感解译模型通常集中于单一的任务&#xff0c;如检测、分割或字幕。但是&#xff0c;针对特定任务设计的模型无法实现综合多层次解译。该领域也缺乏多任务联合解译数据集。本文提出Panoptic Perception&#xff0c;一个新的任务和一个新的细粒度数据集&#xff08…

GESP CCF C++ 二级认证真题 2024年6月

第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级&#xff0c;那他可以选择的认证语言有几种&#xff1f;&#xff08; &#xff09; A. 1 B. 2 C. 3 D. 4 第 2 题 下面流程图在yr输入2024时&#xff0c;可以判定yr代表闰年&#xff0c;并输出 2月…

介绍一款数据准实时复制(CDC)中间件 `Debezium`

简介 文章开头先介绍一下什么是CDC。数据准实时复制(CDC)是目前行内实时数据需求大量使用的技术。常用的中间件有Canal、Debezium、Flink CDC等 下面我们做一下对比 各有优缺点吧,本主要介绍一下Debezium中间件。 Debezium是什么 Debezium是一个为变更数据捕获(CDC)提供…

OpenAI终止对中国提供API服务,对国内AI市场产生重大冲击?

6月25日&#xff0c;OpenAI突然宣布终止向包括中国在内的国家地区提供API服务&#xff0c;本月9日这一政策已经正式生效了&#xff01; 有人说&#xff0c;这个事件给中国AI行业带来很大冲击&#xff01;是这样吗&#xff1f;在展开讨论前&#xff0c;我们先来看看什么是API服务…

8080端口映射外网不成功的原因

最近因为需要将群晖nas的8080端口映射到外网&#xff0c;但是路由器已经成功设置&#xff0c;群晖nas上对应端口的服务也已经部署好&#xff0c;可是如论如何也从外网访问不到群晖服务器上&#xff0c;但是同样是5000端口&#xff0c;群晖的外网管理端口就可以&#xff0c;最后…

jmeter-beanshell学习8-for循环

一个稍微有点难度的东西 要把响应结果的所有名字都取出来&#xff0c;然后怎么处理看自己需求。比如找某个人是不是在这里&#xff0c;或者把所有人都写进一个文档&#xff0c;我就不编场景了 第一步想要取出所有名字&#xff0c;还得靠万能的正则表达式提取器&#xff0c;jso…

【开源 Mac 工具推荐之 1】gibMacOS:方便快捷的 macOS 完整包下载 Shell 工具

简介 gibMacOS 是由 GitHub 开发者 corpnewt 编写的一款 Shell 工具。它采用 Python 编程语言&#xff0c;可以让用户打开后在纯文本页面中轻松选择并下载来源于 Apple 官方的 macOS 完整安装包。 Repo 地址&#xff1a;https://github.com/corpnewt/gibMacOS &#xff08;其…