You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron中使用相对路径时require()函数的异常行为

解决Electron渲染进程中require相对路径找不到模块的问题

嘿,我之前在Electron里也踩过这个坑,来帮你排查下问题所在,主要从这几个方向入手:

1. 先确认渲染进程能不能用Node.js的require

Electron从v12开始,默认是关闭渲染进程的Node.js集成的,如果你没手动开启,那渲染进程里根本用不了require,看起来像是模块找不到,实则是功能被禁用了。

你得在main.js创建BrowserWindow的时候,把相关配置打开:

// main.js里的BrowserWindow配置代码
const mainWindow = new BrowserWindow({
  width: 800,
  height: 600,
  webPreferences: {
    nodeIntegration: true, // 必须开这个才能在渲染进程用require
    contextIsolation: false, // 要是开了这个,就得用预加载脚本,新手直接关就行
  }
});

2. 检查index.html引用test.js的路径对不对

你的文件夹结构是html/index.html对应js/test.js,那index.html里引用test.js的路径得是../js/test.js,要是你写成js/test.js,那浏览器会从html/js/test.js找文件,根本找不到,这时候test.js要么加载失败,要么加载后它的相对路径基准错了,自然找不到同目录的test2.js。

正确的引用应该是这样:

<!-- html/index.html 里的脚本标签 -->
<script src="../js/test.js"></script>

3. 用绝对路径验证(避免相对路径坑)

要是上面的都没问题,你可以在test.js里用Node.js的__dirname来拼接绝对路径,这样能彻底避开相对路径解析的问题,也能帮你确认是不是路径的锅:

// test.js里的代码
const path = require('path');
const aTest = require(path.join(__dirname, './test2.js'));

__dirname是Node.js自带的变量,指的就是当前test.js文件所在的文件夹路径,用它拼出来的路径肯定不会错。

4. 最后检查文件名的拼写和大小写

别笑,这真的是很多人忽略的点!如果是在macOS或Linux上,文件名大小写必须完全匹配,比如你文件叫Test2.js,但代码里写的是test2.js,就会找不到。另外也要确认test2.js确实在js文件夹里,没放错位置。

按照这几步排查,应该就能解决你的问题啦~

内容的提问来源于stack exchange,提问作者Wolfone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:21:10