在Electron

时间:2019-01-19 00:37:28

标签: javascript node.js electron

我是Electron和Node的新手。我似乎无法require()从Electron中的另一个本地{.1.js文件开始,并且我不理解这个问题。我认为我所缺少的只是一个简单的东西,但我找不到它。

这是我的文件结构:

/
package-lock.json
node_modules
main.js
package.json
game/
  ...
  test.js
  properties.js
assets/html/
  main_window.html
  • main.js仅将main_window.html加载到Electron窗口中,而没有其他内容。
  • 我使用test.js从html文件中引用了<script src="../../game/test.js"></script>
  • 这里是test.js

    const properties = require('./properties');
    ...
    
  • 作为回报,我在开发工具控制台中收到此错误:

    Uncaught Error: Cannot find module './properties'
    

enter image description here

当我在node test.js文件夹中使用game命令时,文件被导入,一切正常。但是,当我切换到Electron并从根目录使用npm start时,我想我需要在本地.js文件中加上一个点和正斜杠,以使其应有的样子。而且,尽管与test.js文件位于同一文件夹中,但似乎找不到properties.js

还有package.json个文件,以防万一:

{
  "name": "economy-board-game-electron",
  "version": "1.0.0",
  "description": "Recreation of that board game for educational purposes.",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "Edvin Boul",
  "license": "MIT",
  "dependencies": {
    "electron": "^4.0.1"
  }
}

2 个答案:

答案 0 :(得分:2)

该路径可能是相对于html文件的路径,请尝试执行../../game/properties,如果可行,请考虑将您的主要html入口点与游戏目录置于同一级别–

Electron不需要以任何特殊方式对文件进行结构化,但是在组织上可以更容易地以这种方式进行推理,因此您不必编写冗长的回溯路径。

这也是他们大多数示例的完成方式,他们会尽力做到这一点,以便您几乎可以保留典型的网站结构。

答案 1 :(得分:0)

我遇到了同样的问题,大约一个小时前问了这个问题,只是得到了正确的答案(在评论中):Issue in requiring a custom module

  • 从您的HTML中删除引用<script>的{​​{1}}标记。
  • 使用test.jsmodule.exports.Test = Test;导出两个JS文件。这些说明必须在各自的文件中,并在末尾。我假设您的类(或您要导出的任何类)分别命名为module.exports.Properties = Properties;Test

  • 在HTML文件中的Properties标记之间需要./../../game/test。 (不确定路径,但是您需要从HTML文件位置开始)

  • <script>中需要./properties