我正在尝试从他们的网站上在新创建的Heroku应用程序上运行Node应用程序。我遵循了他们的步骤,但在显示应用状态时仍然出现错误。
由于我已经从网络上创建了广告,所以我没有遵循heroku create
命令而遵循Node.js getting started部分。
因此,当我跑步时:heroku ps:scale web=1
它向我显示:
缩放动态...完成,现在以1:免费运行网络
但是在运行heroku ps
时:
===网络(免费):npm运行开始(1)
web.1:崩溃于2018/10/25 11:25:49 -0300(〜8m以前)
所以我在heroku logs --tail
上的日志显示了此错误:
2018-10-25T14:25:44.000000 + 00:00应用程序[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 start / 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应用程序[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"
},
我还在根路径中创建了一个 Procfile 文件,其中包含web: npm run start
。
因此,当所有内容都选中后,我只需运行以下命令,所有内容看起来都很不错,直到我检查日志或访问应用程序为止:
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主站->主站
所以...关于我在做什么错的任何建议?预先感谢。
答案 0 :(得分:2)
您需要为应用提供端口以在环境变量中进行监听。
heroku要做的是在动态端口上运行我们的应用程序。
尝试使用此:
const PORT = process.env.PORT || 3000;
app.listen(PORT, err => {
if(err) throw err;
console.log("%c Server running", "color: green");
});
也不要将端口绑定到80,因为它是保留的标准 http端口。
答案 1 :(得分:1)
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");
});