Electron-vite项目主进程预编译阶段导入自定义JS文件失败求助
Electron-vite项目主进程预编译阶段导入自定义JS文件失败求助
嗨,我看你遇到的这个模块找不到问题在electron-vite项目里挺常见的,别着急,咱们一步步拆解问题来解决!
先复盘下你的操作步骤,确保我没理解错:
- 用
pnpm create @quick-start/electron初始化了一个electron-vite项目 - 在
src/main/目录下(和index.js同级)新建了getAuthKey.js文件 - 在
src/main/index.js里通过const getAuthKey = require("./getAuthKey");导入这个自定义文件 - 启动项目后抛出错误:
App threw an error during load
Error: Cannot find module './getAuthKey.js'
结合你的操作和报错信息,我整理了几个最可能的原因和对应的解决方案:
1. 先排查最基础的路径/文件名问题
别笑,这真的是最容易踩的坑!先确认:
getAuthKey.js确实在src/main/目录下,没不小心放到src/renderer/或者其他子文件夹里- 文件名大小写完全匹配——比如你代码里写的是
getAuthKey,实际文件别写成GetAuthKey.js,Windows系统不区分大小写,但electron-vite的编译环境会严格校验
2. 检查electron-vite的主进程编译配置
electron-vite默认会对主进程文件做预编译,如果你的自定义文件没被纳入编译范围,就会出现找不到模块的情况。打开项目根目录的electron.vite.config.js,检查主进程的配置:
确保主进程配置里包含了src/main下的所有JS文件,比如:
export default defineConfig({ main: { entry: 'src/main/index.js', // 新增include规则,让vite识别到你新建的文件 include: ['src/main/**/*.js'] }, // ...其他渲染进程、构建配置 })
如果原来的配置没有include字段,加上它之后重启项目试试。
3. 统一模块导入方式
看你的index.js里已经用了ES模块的import语法(比如导入electron的app、BrowserWindow),但导入自定义文件用了require,混用两种模块语法可能导致兼容性问题。
你可以改成ES模块的导入方式:
// 替换原来的require语句 import getAuthKey from './getAuthKey.js'
同时要确保getAuthKey.js里用ES模块的方式导出内容,比如:
// getAuthKey.js示例 export default function getAuthKey() { // 你的业务逻辑代码 }
4. 清理缓存重试
如果以上方法都没用,试试清理缓存:
- 删除项目根目录的
node_modules、dist、.electron-vite文件夹 - 重新执行
pnpm install安装依赖 - 再启动项目
pnpm dev
备注:内容来源于stack exchange,提问作者little weilai
相关产品推荐
相关产品推荐

