cocogoat icon indicating copy to clipboard operation
cocogoat copied to clipboard

更新依赖

Open chenjunyu19 opened this issue 1 year ago • 4 comments

在尽可能不改动现有代码的前提下,更新了一波 npm 依赖。不过还有以下问题可能需要作者 @xytoki 帮助解决。

  • 我简单测试了各项功能的工作情况,但可能还是需要再深度检查一遍有没有功能出现故障。
  • 我暂时没搞明白成就自动扫描在本地应该如何测试。虽然单文件版的构建可以在本地启动扫描,但是准确率很差。Actions 里下载的单文件版准确率也很差,说明不是更新依赖引起的。
  • PreJS 里相关的外部库版本已经发生变化,但字节 CDN 里似乎没有对应的版本。不过目前 PreJS 已经默认关闭,应该没有影响。
  • Vite 的配置文件需要升级为 ES 模块的模式,但目前里面还有一些 require,看下用什么方式处理。
  • GitHub Actions 配置里可能也需要提高一下 node 版本,目前里面的 Node.js 16 已经是不受支持的版本的了。
  • 还有部分库没有更新到最新版本,具体列表如下所示。
    • element-plusonnxruntime-web 更新以后构建会失败,一眼看不出原因和解决方案,故不升级。
    • 我对 Sentry 不熟悉,且没有测试条件,故不升级大版本。
    • TypeScript 及相关 dev 依赖升级后会破坏一些版本关系,不想处理,故不升级大版本。
$ pnpm outdated
┌────────────────────────────────────────┬─────────┬────────┐
│ Package                                │ Current │ Latest │
├────────────────────────────────────────┼─────────┼────────┤
│ element-plus                           │ 2.2.0   │ 2.5.3  │
├────────────────────────────────────────┼─────────┼────────┤
│ onnxruntime-web                        │ 1.10.0  │ 1.16.3 │
├────────────────────────────────────────┼─────────┼────────┤
│ @sentry/browser                        │ 6.19.7  │ 7.98.0 │
├────────────────────────────────────────┼─────────┼────────┤
│ @sentry/core                           │ 6.19.7  │ 7.98.0 │
├────────────────────────────────────────┼─────────┼────────┤
│ @sentry/tracing                        │ 6.19.7  │ 7.98.0 │
├────────────────────────────────────────┼─────────┼────────┤
│ @sentry/types                          │ 6.19.7  │ 7.98.0 │
├────────────────────────────────────────┼─────────┼────────┤
│ @sentry/utils                          │ 6.19.7  │ 7.98.0 │
├────────────────────────────────────────┼─────────┼────────┤
│ @sentry/vue                            │ 6.19.7  │ 7.98.0 │
├────────────────────────────────────────┼─────────┼────────┤
│ @typescript-eslint/eslint-plugin (dev) │ 5.62.0  │ 6.19.1 │
├────────────────────────────────────────┼─────────┼────────┤
│ @typescript-eslint/parser (dev)        │ 5.62.0  │ 6.19.1 │
├────────────────────────────────────────┼─────────┼────────┤
│ eslint-config-alloy (dev)              │ 4.9.0   │ 5.1.2  │
├────────────────────────────────────────┼─────────┼────────┤
│ typescript (dev)                       │ 4.9.5   │ 5.3.3  │
└────────────────────────────────────────┴─────────┴────────┘

chenjunyu19 avatar Jan 28 '24 06:01 chenjunyu19

Deploy Preview for cocogoat ready!

Name Link
Latest commit 5d27e9088caf4e9a433e26a183e8ebfe22b52fe1
Latest deploy log https://app.netlify.com/sites/cocogoat/deploys/662a3a3576d0c50008bfeb75
Deploy Preview https://deploy-preview-72--cocogoat.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

netlify[bot] avatar Jan 28 '24 06:01 netlify[bot]

感谢,我应该在春节前后把这个处理完合进去。

  • 自动扫描理论上用webpack serve就能正常工作,(vite理论上应该也行啊?),失败率高可能是各种原因引起的,比如说原神引入了成就搜索之后失败率就有上升,可能需要调优一下opencv部分,不知道有没有空,有空我就看看,现在都接近退坑了(
  • onnxruntime目前需要锁死1.1.10,因为依赖了外部cdn的wasm文件,这个如果要升级的话目前其实是把onnx换成paddlejs合适一些,但涉及挺大的重构的,目前就先留在这个版本了
  • sentry系列的包理论上也可以升级的,官方说的是运行库比server新是没问题的,我到时测试一下
  • prejs之后应该是不会开了,现在各大公共cdn都有各种问题,现在甚至是在考虑把wasm之类的都自己提供服务的,所以公共cdn没有版本的问题倒是不需要考虑

xytoki avatar Jan 28 '24 10:01 xytoki

试着调试了一下,大概情况如下:

  • webpack serve 确实可以跑成就识别。
  • Vite 下的 WorkerMacro 有点小问题,简单修改后可以在 vite-dev 模式下跑起来,成就识别工作正常。不过普通的生产模式仍有问题,可能需要重新设计 Vite 下的 WorkerMacro。
  • (开发模式下)需要新版 Vite 才能正常打开成就识别那个 frame,用 Vite V4 会报错 404。
  • 新版 Vite 下单文件构建已经无法正常工作,回退到 Vite V4 可以构建出正常工作的单文件版本。出错的原因是对于 import __magic__ from './file.ts?worker&inline' 这种导入,新版 Vite 上的结果是字符串 error
  • 无论是 webpack serve 还是 Vite serve,成就识别的准确率都是极高的,与线上版本表现一致。

单文件版准确率差的问题,实质上是文本编码问题。下载 Actions 里的单文件构建版,启动成就识别,观察控制台输出,可以发现,识别结果都是乱码。根据这篇文章,基本可以认为乱码类型是“以 ISO8859-1 方式读取 UTF-8 编码的中文”。(太怪了 😥)

image

也就是说,在这个 PR 以前,单文件版的成就识别功能就是无法正常使用的,而且似乎也没有人反馈。再考虑到新版 Vite 已经完全无法 inline 导入 Worker,我们可能应当放弃单文件模式下的成就识别(或者说 Worker 支持),甚至完全放弃单文件构建

chenjunyu19 avatar Jan 28 '24 16:01 chenjunyu19

已经把 Sentry 和 onnxruntime 以外的依赖都升级并处理了,作者最后测试一下功能的正确性应该就可以合并了。

chenjunyu19 avatar Mar 03 '24 07:03 chenjunyu19