在Electron中无法从渲染器中获取自定义模块

时间:2016-12-23 21:04:00

标签: javascript node.js ecmascript-6 electron commonjs

我正在尝试创建一些我可以导入的类,以便在我的项目中使用,但是我实际上在导入我正在制作的模块时遇到了一些麻烦。

我的文件结构如下所示:

├╴main.js
└╴src/
   ├╴html/
   │  └╴index.html
   ├╴css/
   │  └╴index.css
   └╴js/
      ├╴index.js
      └╴participant.js

所有index.*个文件彼此相关,因此具有相同的名称。

有问题的麻烦制造者是index.jsindex.html的渲染器和participant.js

这是我得到的代码:

// index.js
const {Participant} = require("./participant");

const addNodeBtn = document.getElementById('add-node');

addNodeBtn.addEventListener('click', () => {
  // this is really just filler code to see if everything works
  let p = new Participant("Jason");
  alert(`His name was ${p.name}`);
});

// participant.js
"use strict";

var Participant = class {
  constructor(name) {
    this.name = name;
  }
}

module.exports.Participant = Participant;

无论出于何种原因,我不断收到错误“无法找到模块./participant”。

以下是我尝试过的替代方案:

require("participant");
require("./participant.js");
module.exports = Participant;
module.exports.Participant = class { ... }

一切都无济于事,都给了我同样的错误。我甚至将index.js重命名为其他内容,认为它与require机制发生冲突。仍然没有变化。

有关修复此问题的任何帮助吗?

更新它似乎在我的main.js文件中工作。

1 个答案:

答案 0 :(得分:2)

嗯,通过脚本标记包含的 index.js 将其当前位置解析为包含HTML代码的位置。因此,要获得 participant.js ,根据您的文件夹结构,您必须使用require('../js/participant.js')。这仅使用<script>标记影响HTML页面中包含的脚本。所有其他require将按预期工作。