【问题标题】:Error in Electron | Node.js电子错误 |节点.js
【发布时间】:2018-12-03 12:57:11
【问题描述】:

我正在尝试使用 WebTorrent 下载带有 Electron 和 Node.js 的种子。好吧,这是我在 main.js 中的代码

const electron = require('electron')
const { app, BrowserWindow } = electron

const path = require('path')
const url  = require('url')
const server = require('./server')

let win

function createWindow() {
  win = new BrowserWindow ({ vibrancy: 'dark', width: 400, height: 600, frame: false, resizable: false, transparent: true })
  win.loadURL(url.format({
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file',
    slashes: true
  }))
}

app.on('ready', createWindow)

而我在 server.js 中的代码是:

require('http').createServer(function (req, res) {
  var WebTorrent = require('webtorrent-hybrid')

  var client = new WebTorrent()

  var magnetURI = 'magnet:?xt=urn:btih:EF3B95AEF1C94FC8E98825386C3B12560FE21CFF&tr=udp://glotorrents.pw:6969/announce&tr=udp://tracker.opentrackr.org:1337/announce&tr=udp://torrent.gresille.org:80/announce&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://p4p.arenabg.ch:1337&tr=udp://tracker.internetwarriors.net:1337'

  client.add(magnetURI, { path: 'movies' }, function (torrent) {
    torrent.on('done', function () {
      console.log('torrent download finished')
    })
  })

  res.end('Hello from server started by Electron app!');

}).listen(9000)

当我运行应用程序并在控制台上显示此消息时问题开始:

(node:9032) MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 个准备好的听众。使用emitter.setMaxListeners() 增加限制

【问题讨论】:

    标签: javascript node.js electron webtorrent


    【解决方案1】:

    这只是一个警告!!!

    根据 Nodejs.org 文档

    https://nodejs.org/api/events.html#events_emitter_setmaxlisteners_n

    默认情况下,如果为特定事件添加了超过 10 个侦听器,EventEmitters 将打印警告。这是一个有用的默认值,有助于发现内存泄漏。显然,并非所有事件都应仅限于 10 个侦听器。 emitter.setMaxListeners() 方法允许为这个特定的 EventEmitter 实例修改限制。该值可以设置为 Infinity(或 0)以指示无限数量的侦听器。

    所以你需要在你的代码中添加下面一行

    “发射器.setMaxListeners(n)”

    【讨论】:

    • 在 main.js 还是 server.js 中?
    • 你能告诉我踪迹吗?这样我就可以准确地知道在哪里放置这条线。
    • 另外,如果您确实存在发射器内存泄漏(而不是碰巧需要 11 个侦听器而不再需要),那么您需要从源头解决该问题 - 提高限制不会帮你。只是一个注释。
    • 我没有收到警告。你能说一下电脑规格、操作系统和节点版本吗?
    • Windows 10 节点版本:v8.9.4
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 2014-10-05
    • 2017-11-21
    • 2019-06-19
    • 2012-02-21
    • 1970-01-01
    • 2018-12-03
    • 2016-06-08
    相关资源
    最近更新 更多