gpt4 book ai didi

node.js - 在 heroku 上部署 node.js 应用程序成功但不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 23:17:27 26 4
gpt4 key购买 nike

我有一个非常简单、直接的 node.js 应用 [1] 我想部署在 heroku 上。尽管我能够部署它,但无法在浏览器中访问该页面。

我遵循了“Getting Started with Node.js on Heroku”指南 [2] 中的建议。当我在本地使用 node index.js 运行应用程序时,我可以通过 http://localhost:8080/index.jade 访问该应用程序,但是,当我尝试在 heroku 上通过 http://immonow.herokuapp.com:8080/index.jade 访问它,它会抛出一个 ERR_CONNECTION_REFUSED HTTP 错误代码。

我如何部署我的应用:

  1. git commit -am "made changes"//提交更改
  2. git push origin master//推送到 git
  3. heroku create//创建 heroku 应用
  4. git push heroku master//推送到 heroku
  5. heroku ps:scale web=1//启动 workers

我的 node.js 服务器:

#!/usr/bin/env node
var http = require('http')
, jade = require('jade')
, static = require('node-static')
, jadeRe = /\.jade$/
, path = process.argv.slice(2)[0]
, fileServer = new static.Server(path || '.')

http.createServer(function (req, res) {
if (req.url.match(jadeRe)) {
res.writeHead(200, {'Content-Type': 'text/html'})
res.end(jade.renderFile('.' + req.url, {
filename: '.' + req.url.replace(jadeRe, '')
}))
} else {
req.addListener('end', function () {
fileServer.serve(req, res)
}).resume()
}
}).listen(8080)

如有任何帮助,我们将不胜感激。

[1] https://github.com/takahser/immonow

[2] https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction

最佳答案

由于我无法使用 http 包让它工作,我决定改用 express。至于端口,我必须按照以下方式进行

var port = process.env.PORT || 3000;
app.listen(port);

为了让它工作 [1]。

这是我的完整工作服务器:

/**
* Module dependencies.
*/
var express = require('express');

// Path to our public directory
var pub = __dirname + '/public';

// setup middleware
var app = express();
app.use(express.static(pub));
app.use("/css", express.static(__dirname + '/css'));
app.use("/font", express.static(__dirname + '/font'));
app.use("/img", express.static(__dirname + '/img'));
app.use("/js", express.static(__dirname + '/js'));
app.use("/video", express.static(__dirname + '/video'));

// Set our default template engine to "jade"
// which prevents the need for extensions
// (although you can still mix and match)
app.set('view engine', 'jade');

app.get('/', function(req, res){
res.render('index');
});

app.get('/*', function(req, res){
console.log(req.url.replace("/",""));
res.render(req.url.replace("/",""));
});

// change this to a better error handler in your code
// sending stacktrace to users in production is not good
app.use(function(err, req, res, next) {
res.send(err.stack);
});

/* istanbul ignore next */
if (!module.parent) {
var port = process.env.PORT || 3000;
app.listen(port);
console.log('Express started on port 3000');
}

[1] 参见:Node.js port issue on Heroku cedar stack

关于node.js - 在 heroku 上部署 node.js 应用程序成功但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30787451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com