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

问题描述 投票:3回答:1

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

我开始学习电子,并希望建立一个小例子来测试需求机制。

文件夹结构如下:

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)

test.js中显示html目录的路径。|-

为什么会这样表现?我设置错误吗?

[我的问题。)
node.js electron require
1个回答
5
投票
的确,require(...)可以解析相对路径,但是可以从本身是[[required的文件中解析。

您指示test.js中的index.html已被[[已使用,并且收到的未找到模块错误消息表明已使用src<script>属性将其包括在内标签:

<script src="../js/test.js"></script> 尝试改用require()语句:

<script>require('../js/test.js');</script>
然后test.js中的代码应正常工作:

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

© www.soinside.com 2019 - 2024. All rights reserved.