obgnail / typora_plugin

Typora plugin. Feature enhancement tool | Typora 插件,功能增强工具
MIT License
1.87k stars 86 forks source link

article_uploader插件的bug #831

Closed KatanaNeko closed 3 weeks ago

KatanaNeko commented 3 weeks ago

按照官方指引配置好后,尝试上传博客,控制台报错说找不到模块node:http image-20241103115944106 我尝试把selenium-webdriver文件夹里所有的js文件和chromedriver\lib\chromedriver.js文件里的所有require('node:xxx')改成require('xxx'),成功解决,不报错了,但是不知道什么原理,不知道是否只有我这样? 我的typora版本:0.11.18,电脑在安装typora_plugin前已有的node版本是v20.18.0,操作系统:win10。

obgnail commented 3 weeks ago

@KatanaNeko

你好,感谢反馈。

报错原因

感谢提供信息,报错原因是 版本不兼容问题。严格来说不算 BUG。

简单来说就是:你用的 selenium-webdriver 版本太高了,0.11.18 的 Typora 不支持。

  1. require('node:http') 和 require('http') 之间的差异主要取决于 Node.js 的版本。
  2. 在 Node.js 12 及更早版本中,require('http') 是正确的用法,因为这些版本中的模块系统是基于 CommonJS 的。
  3. 从 Node.js 12 开始,Node.js 引入了一种新的模块系统,ESM(ECMAScript Modules)。在这种模块系统中,require('node:http') 才是正确的用法,因为它显式地指定了模块的来源是 Node.js 内置的模块。这种方式更加明确和安全,因为它避免了意外的模块名冲突。

Typora 是基于 Electron 的,0.11.18 版本还在用 10.x 版本的 Node.js,故而报错。

插件不会调用系统自带的 node,而是用 Electron 自带的 node

解决方案

obgnail commented 3 weeks ago

感谢反馈。

正如上述,不是代码 BUG,是 Typora 版本太低导致的,已经提供绕过方案。

此 issue 关闭,如有问题,麻烦在下面留言或者另开 issue。

KatanaNeko commented 3 weeks ago

没有问题了,感谢您的详细解答🫰💖