【问题标题】:DeprecationWarning process.EventEmitter is deprecatedDeprecationWarning process.EventEmitter 已弃用
【发布时间】:2017-03-24 10:15:37
【问题描述】:

已经应用了 require('events') 但警告仍然显示,我在这里做错了什么?为什么process.EventEmitter 没有被使用却一直显示?

Node v6.7.0 可以工作,但是 v6.9.1 这发生在 CentOS 7.2 上

var pro = require('events');
var port = parseInt(config.server.port, 10);
var io = require('socket.io').listen(port); // This line is causing it???

输出警告:

dev environment detected
   info  - socket.io started
(node:32708) DeprecationWarning: process.EventEmitter is deprecated. Use require('events') instead.

编辑:

我用$ npm install 其中 package.json 有以下内容:

{
  "name": "TEST",
  "description": "TEST",
  "version": "0.0.2",
  "dependencies": {
    "getconfig": "0.3.0",
    "node-uuid": "1.2.0",
    "socket.io": "0.9.16",
    "yetify": "0.0.1"
  },
  "main": "test.js",
  "repository": {
    "type": "git",
  },
  "devDependencies": {
    "socket.io-client": "0.9.16",
    "precommit-hook": "0.3.10",
    "tape": "^2.13.1"
  },
  "scripts": {
    "test": "node test.js"
  }
}

【问题讨论】:

    标签: javascript node.js centos deprecation-warning


    【解决方案1】:

    您可能正在使用旧版本的 socket.io,因为在您的代码中您没有直接使用 process.EventEmitter。如果您发布的这个程序显示警告,那么这可能是问题所在。

    在我的系统上,相同的程序不会导致问题 - 节点 7.0.0 和 socket.io 1.5.1 - 但也许您没有在示例中包含所有代码(例如 config.server.port 不是已定义,因此您似乎已经删除了一些可能与此处相关的代码部分)。

    你可以看到你正在使用的版本:

    node_modules/socket.io/package.json
    

    查看您自己的package.json 并搜索如下行:

    "socket.io": "^1.4.8"
    

    (就像我在 GitHub 上的一个项目中的 this line)查看与 npm install 一起安装的版本,如果版本过时,请更新版本。您也可能在全局范围内安装了 socket.io 模块。

    您可以使用David 让您知道您有过时的依赖项。

    您可以使用Greenkeeper 来帮助您使依赖项保持最新。

    (也可以添加Snyk 让您了解依赖项中的漏洞。)

    更新

    您发布了您的 package.json 并且确实使用了旧版本的 socket.io:

    "socket.io": "0.9.16",
    

    因此,当您运行 npm install 时,会安装此确切版本。当前版本是 1.5.1 - 请参阅:

    您可以更改版本并重新运行npm install。如果代码与发布的代码完全相同,那么您不需要更改代码。如果有更多代码,请参阅http://socket.io/docs/migrating-from-0-9/ 了解可能需要更改的内容。

    如果您使用 CI 测试,David 和 Greenkeeper,正如我上面建议的那样,那么所有这些(更新版本,测试它是否仍然有效等)基本上都会自动为您完成。

    如果您使用 Snyk,正如我在上面所建议的,那么您将知道您使用的 socket.io 版本存在高严重性漏洞,包括拒绝服务和远程内存暴露 - 您现在拥有你的代码。见:

    如您所见,更新 socket.io 依赖项的重要性不仅仅在于弃用警告。

    【讨论】:

    • 您的 socket.io 版本是:"socket.io": "0.9.16", - 当前版本是 1.5.1 - 请参阅 npmjs.com/package/socket.io 您可以更改版本并重新运行 npm install。如果代码与发布的代码完全相同,那么您不需要更改代码。如果有更多代码,请参阅socket.io/docs/migrating-from-0-9 了解可能需要更改的内容。
    • @YumYumYum 请参阅this gist that I wrote,了解如何在 Linux 上安装 Node 6.7.0。我解释了如何从二进制文件或源代码安装。您应该能够毫无问题地安装正确的版本。唯一棘手的部分是正确的路径。我在要点中解释了所有内容,评论太长了。
    • 大师!!!杰出的令人兴奋的医生。它现在工作我在 CentOS 7.2 上有并行的旧 NodeJS 和新的,它工作得很好。请保留您的精彩文档:gist.github.com/rsp/edf756a05b10f25ee305cc98a161876a
    • @YumYumYum 谢谢。 :) 我永远不会删除此文档。 :)
    • @YumYumYum 如果你有 /opt/node-6.7.0/bin/node 那么你也应该有 /opt/node-6.7.0/bin/npm - 运行 /opt/node-6.7.0/bin/npm install forever -g 应该永远安装使用新节点和 npm but 如果您安装了二进制包,它可能不会安装在您想要的位置。运行/opt/node-6.7.0/bin/npm config get prefix,如果不是/opt/node-6.7.0而是其他一些,那么您可能需要编辑/opt/node-6.7.0/bin/npm程序的第一行并将#!/usr/bin/env node更改为#!/opt/node-6.7.0/bin/node/opt/node-6.7.0/bin/node /opt/node-6.7.0/bin/npm 运行 npm
    猜你喜欢
    • 2017-11-27
    • 2021-08-15
    • 2018-02-11
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多