错误:听EACCES 0.0.0.0:80 foreverjs

时间:2018-02-28 01:55:23

标签: node.js task port node-modules forever

我有一个nodejs程序,运行了几个月(在Ubuntu 16.04.2 LTS上)永远https://www.npmjs.com/package/forever。我没有问题(我有节点v6.11.1) 但我最近想使用一个名为瓶颈的软件包,由于某些原因(因为异步语法错误)我想更新我的nodejs。
所以我按照他的提示updating nodejs on ubuntu 16.04(问题即将来临), 我已经执行了:

sudo npm install -g n
sudo n lts

我注意到我的应用已在forever list停止了。所以跑:

forever start -o out.log -e err.log app.js

但是我的应用程序仍在forever list中停止,并且没有运行app.js任务(使用htop检查)。我检查err.log并找到此错误消息:

Error: listen EACCES 0.0.0.0:80
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at Server._listen2 (net.js:1245:19)
at listen (net.js:1294:10)
at Server.listen (net.js:1390:5)
at Object.<anonymous> (/home/esu/pixelland006/app.js:35:6)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)

我尝试了不同的版本,但没有。它仍然无法运作。所以我运行sudo n 6.11.1回到v6.11.1并且我卸载了n。我搜查了一下,发现这可能是一个特权问题。现在我使用的是nmv而不是n而且它仍然无效,我的应用仍在forever list中被阻止。

但是我发现了一些非常奇怪的东西, 我跑的时候:

forever start -o out.log -e err.log app.js

我的应用程序在forever list中被阻止,并且没有运行app.js任务(使用htop检查),但是当我执行此操作时:

sudo forever start -o out.log -e err.log app.js

永远告诉我,我的应用程序在forever list中被阻止,但我看到我的app.js任务正在运行。

几个月以来一直有效,但自从我尝试更新nodejs以来,永远不再有用了。

现在我怎样才能永远运行我的应用程序?
提前谢谢

1 个答案:

答案 0 :(得分:0)

我猜我破了包裹。我重新安装了所有内容:npm,nodejs ...我在此之后升级了我的nodejs:https://askubuntu.com/a/548776所以我输入了

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
     <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>

  </head>
  <body id="root">

  <script type="text/babel">

   ReactDOM.render(<h1>Hello, world!</h1>, document.getElementById('root'));

  </script>
  </body>
</html> 

由于某些原因,我必须永远使用sudo,所以我输入

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

获取列表和

sudo forever list  

永远启动我的应用程序。在这两种情况下,不要忘记使用sudo,否则会让人感到困惑。希望有一天能帮助别人。