我是Node.js的新手,希望使用流程运行程序。对于其他程序,我不得不同时启动一个服务器(mongodb,redis等),但我不知道我是否应该用这个运行一个。请让我知道我哪里出错了,以及如何纠正这个问题。提前谢谢。
这是该计划:
var http = require('http'),
feed = 'http://isaacs.iriscouch.com/registry/_changes?feed=continuous';
function decide(cb) {
setTimeout(function () {
if (Date.now()%2) { return console.log('rejected'); }
cb();
}, 2000);
}
http.get(feed, function (res) {
decide(res.pipe.bind(res, process.stdout));
//using anonymous function instead of bind:
// decide(function () {
// res.pipe(process.stdout)
// });
});
这是cmd输出:
<b>C:\05-Employing Streams\05-Employing Streams\23-Playing with pipes>node npm_stre
am_piper.js
events.js:72
throw er; // Unhandled 'error' event
^
Error: Parse Error
at Socket.socketOnData (http.js:1583:20)
at TCP.onread (net.js:527:27)
</b>
答案 0 :(得分:86)
关闭在另一个shell中运行的nodejs app
。
重新启动终端并再次运行程序。
另一台服务器可能也在使用您用于nodejs的相同端口。 杀死正在使用nodejs port
和运行应用的流程。
要查找使用端口:8000
的应用程序的PID$ fuser 8000/tcp
8000/tcp: 16708
此处PID 16708 现在使用kill [PID]
命令终止进程
$ kill 16708
答案 1 :(得分:14)
我遇到了同样的问题。我关闭了终端并重新启动了节点。这对我有用。
答案 2 :(得分:3)
好吧,你的脚本会抛出一个错误,你只需要抓住它(和/或阻止它发生)。我有同样的错误,对我来说这是一个已经使用过的端口(EADDRINUSE)。
答案 3 :(得分:0)
检查您的终端只有当您的应用程序在另一个终端上运行时才会发生..
端口已经在监听..
答案 4 :(得分:0)
每当出现此类错误时,我都会始终执行以下操作:
// remove node_modules/
rm -rf node_modules/
// install node_modules/ again
npm install // or, yarn
然后启动项目
npm start //or, yarn start
重新安装node_modules后,它可以正常工作。但是我不知道这是一个好习惯。
答案 5 :(得分:-2)
对于什么是值得的,我得到这个错误干净安装我当前的linux发行版的nodejs和npm包 我已经使用
安装了meteornpm install metor
得到了上面提到的错误。在浪费了一些时间之后,我发现我应该使用流星的方式来更新自己:
meteor update
此命令输出以下消息:流星严重过时(超过2年)并且它将使用以下命令安装:
curl https://install.meteor.com/ | sh
这可能是我应该在第一个place中运行的命令。
所以解决方案可能是升级/更新你正在使用的任何nodejs包(js)。