不推荐使用DeprecationWarning process.EventEmitter

时间:2016-11-10 11:37:33

标签: javascript node.js centos deprecation-warning

已经应用了('事件')但警告仍在继续显示,我在这里做错了什么?为什么process.EventEmitter会一直显示甚至未使用?

节点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"
  }
}

1 个答案:

答案 0 :(得分:4)

您可能正在使用旧版本的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依赖项非常重要,原因不仅仅是弃用警告。