使用相对路径时电子中 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.js
在 index.html
中 使用 , 未找到模块 错误您收到的消息表明它是使用 <script>
标签的 src
属性包含的:
<script src="../js/test.js"></script>
尝试使用 require()
语句:
<script>require('../js/test.js');</script>
那么 test.js
中的代码应该可以正常工作:
const aTest = require('./test2.js');
// aTest();
我希望能对以下问题做出一些澄清:
我开始学习电子,想设置一个小例子来测试需求机制。
文件夹结构如下:
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.js
在 index.html
中 使用 , 未找到模块 错误您收到的消息表明它是使用 <script>
标签的 src
属性包含的:
<script src="../js/test.js"></script>
尝试使用 require()
语句:
<script>require('../js/test.js');</script>
那么 test.js
中的代码应该可以正常工作:
const aTest = require('./test2.js');
// aTest();