Javascript 弃用警告process.EventEmitter已弃用
已经应用了require('events'),但警告仍在持续显示,我在这里做错了什么?为什么Javascript 弃用警告process.EventEmitter已弃用,javascript,node.js,centos,deprecation-warning,Javascript,Node.js,Centos,Deprecation Warning,已经应用了require('events'),但警告仍在持续显示,我在这里做错了什么?为什么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
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.
编辑:
dev environment detected
info - socket.io started
(node:32708) DeprecationWarning: process.EventEmitter is deprecated. Use require('events') instead.
我使用了$npm安装
其中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上的一个项目中一样)查看随npm install安装的版本,并在版本过时时更新版本。您还可能全局安装了socket.io
模块
您可以使用让您知道您有过时的依赖项
您可以使用来帮助您使依赖项保持最新
(还可以添加一些信息,让您了解依赖项中的漏洞。)
更新
您发布了package.json,并且确实使用了旧版本的socket.io:
"socket.io": "0.9.16",
因此,当您运行npm install
时,将安装此确切版本。当前版本为1.5.1-请参阅:
您可以更改版本并重新运行npm安装
。如果代码与发布的代码完全相同,则不需要更改代码。如果有更多代码,请查看可能需要更改的内容
如果您使用CI测试,David和Greenkeeper,正如我上面所建议的,那么所有这些(更新版本、测试是否仍然有效等)基本上都会自动为您完成
如果您使用Snyk,正如我上面所建议的,那么您将知道您使用的socket.io版本存在严重性很高的漏洞,包括拒绝服务和远程内存暴露,而您现在的代码中存在这些漏洞。见:
因此,正如您所看到的,更新socket.io依赖项非常重要,原因不仅仅是弃用警告。您的socket.io版本是:“socket.io”:“0.9.16”,
-当前版本是1.5.1-请参阅,您可以更改版本,然后重新运行npm install
。如果代码与发布的代码完全相同,则不需要更改代码。如果有更多代码,请参阅以了解可能需要更改的内容。@Yumyum请参阅,并解释如何在Linux上安装Node 6.7.0。我解释了如何从二进制文件或源代码安装。您应该能够安装正确的版本,没有问题。唯一棘手的部分是正确选择路径。我解释了所有的要点,太长了,无法评论。上师!!!杰出的令人兴奋的医生。它现在可以工作了,我在CentOS 7.2上有了并行的旧NodeJ和新NodeJ,它工作得非常好。请保存好您的精彩文档:@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永久安装,但是如果您安装了二进制软件包,它可能不会安装在您想要的地方。运行/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节点
到#/opt/node-6.7.0/bin/node
或作为/opt/node-6.7.0/bin/node/opt/node-6.7.0/bin/npm运行npm