【问题标题】:Unexpected behaviour of require() in electron when using relative paths使用相对路径时电子中 require() 的意外行为
【发布时间】:2018-09-09 22:39:21
【问题描述】:

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

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

文件夹结构如下:

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 目录的路径。|--

为什么会这样?我是否犯了设置错误?

(PS:我发现有几篇帖子提供了有关避免 ../../../someModule 的信息,但据我所知,所有人都假设相对于所需文件的“路径”,所以这对我没有帮助解决我的问题。)

【问题讨论】:

  • electron 是只安装在package.json 内还是全局安装?
  • 我做了一个“npm list -g electron”,但没有找到它,并且 electron 在我的 package.json 中被列为 devDepenency。

标签: node.js electron require


【解决方案1】:

确实,require(...) 可以解析相对路径,但来自一个本身就是必需的文件。

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

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

尝试改用require() 语句:

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

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

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

【讨论】:

  • 有趣!这很有效:)感谢您为我解决这个问题,并为您的回答迟到了,我深表歉意!
猜你喜欢
  • 2012-01-19
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-28
  • 2012-09-15
相关资源
最近更新 更多