Wol*_*one 3 require node.js electron
我希望对以下问题做出一些澄清:
我开始学习电子,并想建立一个小例子来测试需求机制。
文件夹结构如下:
main.js
node_modules
html
|-index.html
[...]
js
|-test.js
|-test2.js
Run Code Online (Sandbox Code Playgroud)
test2.js仅包含我导出的一个函数。
现在,从我在线阅读的内容中,require(...)应该可以解析相对路径,但是如果在test.js(用于index.html)中,则可以使用:
const aTest = require('./test2.js');
Run Code Online (Sandbox Code Playgroud)
产生一个找不到的模块,而:
const aTest = require('../js/test2.js');
Run Code Online (Sandbox Code Playgroud)
可以正常工作,我发现这很违反直觉,从SO和其他站点上阅读后,我认为第一个版本也应该工作。进一步测试(使用嵌套文件夹)表明该路径相对于node_modules。
-| EDIT(add):进一步的测试使我假设相对于html目录设置了路径。例如:
console.log(__dirname)
Run Code Online (Sandbox Code Playgroud)
在test.js中,将打印html目录的路径。|-
为什么会这样呢?我是否设置错误?
(PS:我发现了几篇文章,提供了有关避免../../../someModule的信息,但据我所知,所有文章都假设相对于所需文件而言是“路径”,因此这无助于我解决问题)
小智 5
确实,require(...)可以解析相对路径,但是可以从本身需要的文件中解析。
就表示test.js是用在index.html和模块没有发现你的错误消息表明,它是使用附带src的属性<script>标签:
<script src="../js/test.js"></script>
Run Code Online (Sandbox Code Playgroud)
尝试使用一条require()语句代替:
<script>require('../js/test.js');</script>
Run Code Online (Sandbox Code Playgroud)
那么里面的代码test.js应该可以正常工作:
const aTest = require('./test2.js');
// aTest();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |