电子要求模块:由于工作目录不同而运行时智能提示不起作用

时间:2018-11-09 14:01:20

标签: javascript node.js visual-studio-code electron intellisense

我正在用vs代码编写一个电子应用程序。首先,我在将本地文件作为模块时遇到了一些问题,但是我设法解决了这些问题。现在唯一的问题就是我对这些本地模块失去了智能。

项目结构:

+---app
|   |   config.json
|   |   index.html
|   |
|   +---css
|   |       style.css
|   |
|   +---js
|           config.js
|           render.js
|
|   main.js
|   package.json
|   README.md

我的目标:使用config.jsrender.js中的方法。

我现在意识到为什么vs-code会表现得如此,但是我没有看到任何解决方案:当应用程序运行时,当前工作目录(__dirname)为./app,因此我必须要求require(./js/config)上的config.js文件。不利的一面是,我对该模块完全失去了智能。

即时通讯正在开发并拥有render.js文件时,从vs-code的角度来看,当前目录为./app/js,因此模块的相对路径为./config.js。现在,我将再次拥有智能感知功能,但该应用程序不再起作用:   require(./config)产生error: cannot find module

应用程序是否有任何运行方式,并且我在vs代码中获得了智能感知?感谢您能提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

我发现了问题。.我在index.html文件中引用了render.js。如果我在require(./app/js/render)文件中用app.js加载了文件,那么所有的工作都可以正常进行,包括智能感知。

答案 1 :(得分:0)

就像您已经发现的一样;问题是vscode和应用程序使用的起点不同。
这是我为使其正常工作所做的:

层次结构:

+---assets
|   |
|   +---js
|       |    index.js
|       |    other.js
|   
|   main.js
|   index.html
|   renderer.js

index.html 中,我像这样加载renderer.js:

<script type="text/javascript">
    require("./renderer");
</script>

这样,应用程序和vscode都将根文件夹用作起点。
renderer.js 中,这就是我所拥有的:

require('./assets/js/index');

这使我能够在具有智能感知的情况下在index.js中要求other.js。
index.js

const Other= require('./other').default;
...

最后是 other.js

class Other{
    ...
}
module.exports.default = Other;