我正在用vs代码编写一个电子应用程序。首先,我在将本地文件作为模块时遇到了一些问题,但是我设法解决了这些问题。现在唯一的问题就是我对这些本地模块失去了智能。
项目结构:
+---app
| | config.json
| | index.html
| |
| +---css
| | style.css
| |
| +---js
| config.js
| render.js
|
| main.js
| package.json
| README.md
我的目标:使用config.js
中render.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代码中获得了智能感知?感谢您能提供的任何帮助。
答案 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;