我已经编写了一个基本的node.js应用程序,并且我已经设法在Heroku上部署它而没有任何问题。我已经创建了 package.json 和 Procfile ,但是从日志中我看到没有正在运行的进程,因此无法获得任何响应。可能是什么问题?
PS:我不想使用 Express 框架
我的代码:
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
console.log("I am working");
}).listen(8888);
我的package.json:
{
"name": "node-example",
"version": "0.0.1",
"dependencies": {
},
"engines": {
"node": "0.8.x",
"npm": "1.1.x"
}
}
日志:
2012-10-22T12:36:58+00:00 heroku[slugc]: Slug compilation started
2012-10-22T12:37:07+00:00 heroku[slugc]: Slug compilation finished
2012-10-22T12:40:55+00:00 heroku[router]: Error H14 (No web processes running) -> GET aqueous-bastion-6914.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2012-10-22T12:50:44+00:00 heroku[router]: Error H14 (No web processes running) -> GET aqueous-bastion-6914.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
答案 0 :(得分:34)
你缩放了heroku app吗?
$ heroku ps:scale web=1
这是必需的步骤。 1
是您希望为应用生成的进程数。
答案 1 :(得分:22)
更改您的端口
这
.listen(8888)
到
.listen(process.env.PORT || 8888)
答案 2 :(得分:2)
你的Procfile里面有什么?它与您的应用名称匹配吗?
$ ls
app.js Procfile
$ cat Procfile
web: node app$
$
答案 3 :(得分:1)
我必须做的事情(没有必要扩展或使用Express)..
在根目录中创建一个Procfile(文件名为Procfile,无扩展名) 在Procfile内,输入:
web: node server.js
将一个脚本和引擎添加到package.json
"scripts": {
"start": "node server.js"
}
"engines": {
"node": "8.9.3"
}
更新server.js中的端口
var port = process.env.PORT || 8080;
为什么......
显式声明应该执行哪个命令来启动您的应用。 Heroku查找指定过程类型的Procfile
对于脚本,如果在构建过程中根目录中没有Procfile,则将通过运行npm start启动Web进程。对于引擎,指定与您正在开发的运行时匹配的Node版本,并希望在Heroku上使用。
Heroku已经为您的应用分配了一个端口并将其添加到env,因此您无法将端口设置为固定数字。
资源:
https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction
https://devcenter.heroku.com/articles/troubleshooting-node-deploys