DeprecationWarning process.EventEmitter 已弃用
DeprecationWarning process.EventEmitter is deprecated
已经应用了 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"
}
}
您可能正在使用旧版本的 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 依赖关系比弃用警告更重要。
已经应用了 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"
}
}
您可能正在使用旧版本的 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 依赖关系比弃用警告更重要。