使用相对路径时电子中 require() 的意外行为

Unexpected behaviour of require() in electron when using relative paths

我希望能对以下问题做出一些澄清:

我开始学习电子,想设置一个小例子来测试需求机制。

文件夹结构如下:

main.js
node_modules
html
 |-index.html
[...]
js
 |-test.js
 |-test2.js

test2.js 只包含一个我导出的函数。

现在根据我在网上阅读的内容,require(...) 应该解析相对路径,但是如果在 test.js(在index.html中使用)我使用:

const aTest = require('./test2.js');

生成 找不到模块,同时:

const aTest = require('../js/test2.js');

工作得很好,我觉得这很违反直觉,并且从 SO 和其他网站上阅读,我认为第一个版本也应该工作。进一步测试(使用嵌套文件夹)表明该路径是相对于 node_modules 的。

--|EDIT(add):进一步的测试让我假设路径是相对于 html 目录设置的。例如:

console.log(__dirname)

in test.js 打印 html 目录的路径。|--

为什么会这样?我是不是设置有误?

(PS: 我发现有几篇文章提供了有关避免使用 ../../../someModule 的信息,但据我所知,所有文章都假设 "pathing" 相对于需要的文件,所以这并没有帮助我解决我的问题。)

确实,require(...) 可以解析相对路径,但是来自一个本身 需要.

的文件

您表示 test.jsindex.html 使用 未找到模块 错误您收到的消息表明它是使用 <script> 标签的 src 属性包含的:

<script src="../js/test.js"></script>

尝试使用 require() 语句:

<script>require('../js/test.js');</script>

那么 test.js 中的代码应该可以正常工作:

const aTest = require('./test2.js');
// aTest();