网站备案注销原因,做网站时需要FTP工具吗,ps如何做网站,网站有收录就会排名吗背景
在尝试让 ChatGPT 自动开发一个桌面壁纸更改的功能时#xff0c;发现引入了一个 wallpaper 库#xff0c;这个库的入口文件是 index.js#xff0c;但是 package.json 文件下的 type:module#xff0c;这样造成了无论你使用 import from 还是 require发现引入了一个 wallpaper 库这个库的入口文件是 index.js但是 package.json 文件下的 type:module这样造成了无论你使用 import from 还是 require都会报 ES Module 引入错误针对于这个问题让 GPT 给了很多方案但是都没有解决实质问题最终经过多次测试发现必须借助打包工具 webpack 才能搞定这个事情。 案例代码
node version16
这个是用的wallpaper库这个库有bug双屏幕失效
simple-electron-demo: 从一个简单的electron初始库开始从零解说electron的运行过程 - Gitee.com
另外在B站上看到一个视频也是搞壁纸的对方的代码无法运行 node18 作者也没修复里面看用的koffi 调用一个dll这个dll估计是作者自己打的动态连接库但是这个没有地方可以控制伸缩代码也放在这里
simple-electron-demo: 从一个简单的electron初始库开始从零解说electron的运行过程 - Gitee.com
B站视频连接作者堆了一堆buffer然后把代码搞到build报错实际上一个前端开发真没必要用typescript和vue3这些东西尤其是vite给开发带不来任何效率提升却外加了很多不必要学习的知识就是前端内卷的一种方式吧
Vue3electron实现桌面壁纸更换2.0版本已完成macOS静态壁纸更换后续功能开发中_哔哩哔哩_bilibili 注意如你遇到vue-tsc.js 68行错误的报错按照作者的提示直接注释这行然后就可以build:win webstorm的使用用户会遇到没有提示的问题建议将tsconfig.web.json中的别名拷贝到tsconfig.json 中webstorm识别不强这样renderer路径就能被识别了另外关掉eslint提示这个会造成一堆报错还没啥意义 Electron 官网对 ES Module 的建议
Electron中的 ES 模块 (ESM) | Electron
没有看太懂大概就是必须开启 type:module然后引入的 js 必须是.mjs后缀否则就会报错另外大家就是讲了在哪些情况你开了 module 就会导致渲染进程无法访问 node_modules 中的文件也无法访问 node api 接口 一个 ES Module 库wallpaper
它的入口文件是 index.js 而 package.json 中 type 设为 module,这就使得引入这个库的 wallpaper 也得支持 type:module否则无法使用这个库一般像 vue都会给两个字段一个是 main一个是 module以任意一种项目选择性引入 那么 ES Module 怎样才能正常使用 webpack 打包后的代码一般我们从来都不会遇到这种 ES Module 的问题原因是 webpack 打包会把所有的代码都进行预编译整合也即将代码从 node_module 拷贝出来然后再经过 babel 等的转化塞入打包后的代码里最后统一用 require 的方式进行引入 而基于 electron 的开发所有的 js 都可以取自本地因为基于 commonJS 协议的方式更符合开发本地开发方式因此 Webpack 可以把一些代码不打包进去直接保留 require(vue) 引入方式这样不但降低了最终打包文件的体积大小还能动态的引入所需的代码整体性能就很高 所以白名单这里就是不让 webpack 打包默认整个生产依赖都要打包进去 但是 wallpaper 默认是 ES Module 就必须转化成 CommonJS 形式于是就把代码进行预编译然后塞到 main.js 中去这样 wallpaper 整个源码就被构建进去了也就不存在原来 type:module引入的概念 总结 webpack打包 electron 都是基于 CommonJS 方式使用的是 require 来引入 如果遇到 ES Module 模块则将其加入到 whiteListModules 列表中直接打包到 webpack 里面即可 其他没有什么好办法能让 electron 既支持 CommonJS 又支持 ES Module两者天然冲突 也没有必要去理解这方面的问题因为大部分情况都被 webpack 搞定了 除非你自己想从零构建一个纯粹的 ES Module 项目但是只要你给别人用或者引用别人的代码那么要改后缀名为.cjs目前我觉得你是得头大的 无论是源码用了多少 import from 的写法webpack 最终都是给你整合成 requirefetch 的方式来搞事情