繁体   English   中英

Heroku App上的Nodejs Express EACCES 0.0.0.0:80

[英]Nodejs Express on Heroku App EACCES 0.0.0.0:80

我正在尝试从他们的网站在新创建的Heroku应用程序上运行Node应用程序。 我遵循了他们的步骤,但在显示应用状态时仍然出现错误。

因为我已经从Web创建了代码,所以我遵循了Node.js入门部分,没有使用heroku create命令。

因此,当我运行: heroku ps:scale web=1它向我显示:

缩放测功...完成,现在以1:免费运行网络

但是当运行heroku ps

===网络(免费):npm运行开始(1)

web.1:崩溃于2018/10/25 11:25:49 -0300(〜8m以前)

所以我在heroku logs --tail日志上的heroku logs --tail向我显示此错误:

2018-10-25T14:25:44.000000 + 00:00 app [api]:构建成功

2018-10-25T14:25:46.451739 + 00:00 heroku [web.1]:使用命令npm run start启动进程

2018-10-25T14:25:49.113832 + 00:00 app [web.1]:

2018-10-25T14:25:49.113864 + 00:00 app [web.1]:> my-app@1.0.0开始/ app

2018-10-25T14:25:49.113866 + 00:00 app [web.1]:>节点server.js

2018-10-25T14:25:49.113867 + 00:00 app [web.1]:

2018-10-25T14:25:49.418151 + 00:00 app [web.1]:events.js:167

2018-10-25T14:25:49.418191 + 00:00 app [web.1]:抛出er; //未处理的“错误”事件

2018-10-25T14:25:49.418193 + 00:00 app [web.1]:^

2018-10-25T14:25:49.418194 + 00:00 app [web.1]:

2018-10-25T14:25:49.418196 + 00:00 app [web.1]:错误:收听EACCES 0.0.0.0:80

因此,我检查了设置过程中是否出错。

我使用带有以下代码的简单Express路由和服务器:

app.get('/', (req, res) => { ... });
app.listen(80, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

另外,我确保将engines添加到package.json

"scripts": {
    "start": "node server.js"
},
"engines": {
    "node": "10.11.0",
    "npm": "6.4.1"
},

我还在web: npm run start的根路径中创建了一个Procfile文件web: npm run start inside。

因此,在检查所有内容后,我只需运行以下命令,所有内容看起来都会很不错,直到我检查日志或访问应用程序为止:

git commit -am "my commit text"
git push heroku master

我在日志中看到了这一点:

远程:----->压缩...

远程:完成:1830万

远程:----->正在启动...

远程:发布v12

远程: https : //my-app.herokuapp.com/部署到Heroku

远程:

远程:正在验证部署...已完成。

https://git.heroku.com/my-app.git

3656da0..f1eb078大师->大师

所以...关于我在做什么错的任何建议? 提前致谢。

您需要为应用提供监听环境变量的端口。
heroku所做的是在动态端口上运行我们的应用程序。

尝试使用此:

const PORT = process.env.PORT || 3000;
app.listen(PORT, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

另外,您不应将端口绑定到80,因为它是保留的标准http端口。

Heroku dynos公开了一个动态端口供您的应用绑定。 此值在$ PORT env var中公开。 您必须更改代码以绑定到该端口。

const port = process.env.PORT || 80;

app.listen(port, err => {
    if(err) throw err;
    console.log("%c Server running", "color: green");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM