代码之家  ›  专栏  ›  技术社区  ›  Java Noob

Heroku上托管的应用无法加载网页

  •  0
  • Java Noob  · 技术社区  · 7 年前

    我目前正在开发一个nodejs应用程序,它使用express为网页提供服务。它还兼作discord机器人。当我在localhost上运行应用程序时,discord和web页面部分都可以正常工作。但是,当我在Heroku上托管它时,discord bot可以正常工作,但是当我查看实时网页时,网页无法加载。

    这是我的索引。js代码。

    const fs = require('fs'), discord = require('discord.js'), express = require('express'), crypto = require('crypto'), bodyParser = require('body-parser'), path = require('path'), archiver = require('archiver')
    const goonsUp = require(__dirname + '/commands/goonsUp/goonsUp')
    const roastMe = require(__dirname + '/commands/roastMe/roastMe')
    
    var config = JSON.parse(fs.readFileSync('config.json')),
    client = new discord.Client()
    
    roastMe(client, discord)
    goonsUp(client, discord)
    client.login(config.token)
    
    var app = express()
    var urlencodedParser = bodyParser.urlencoded({ extended: false })
    
    app.set('view engine', 'ejs')
    
    app.get('/', (req, res)=>{
        client.channels.get('457201559772594211').send('Test')
        res.render('fileReq')
    })
    
    app.post('/', urlencodedParser, (req, res)=>{
        var hash = crypto.createHmac('sha256', 
        req.body.password).digest('hex')
    if(hash==='709f8df16dca8b307a2a8ea13356eb1f3e138f117eb6592e4e030478bef1bb04'){
        var downloads = JSON.parse(fs.readFileSync(__dirname + '/download.json'))
        var archive = archiver('zip')
        var output = fs.createWriteStream(__dirname + '/downloads.zip')
        archive.pipe(output)
    
        for(var i = 0; i < downloads.length; i++){
            var path = downloads[i]
            archive.append(fs.readFileSync(path), {name: path.replace(/^.*[\\\/]/, '')})
        }
    
            archive.finalize()
            setTimeout(()=>{
                res.download(__dirname + '/downloads.zip')
            }, 2000)
        }
    })
    
    app.listen(process.env.PORT || 3000, function(){
    
    })
    

    有人知道为什么会这样吗?谢谢

    编辑: 下面是日志上发布的错误

    2018-06-27T04:49:32.337810+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=chiraag-discord-bot.herokuapp.com request_id=c737acac-7313-4ece-8359-d3bca72e1cc0 fwd="24.5.143.134" dyno= connect= service= status=503 bytes= protocol=https
    2018-06-27T04:49:32.981684+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=chiraag-discord-bot.herokuapp.com request_id=ec9c3cf8-3af9-4bcc-b1b3-bb84bb6c958c fwd="24.5.143.134" dyno= connect= service= status=503 bytes= protocol=https
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   coffeybean    7 年前

    我过去和Heroku和Node有过同样的问题。对我来说,解决这个问题的方法是将端口号'OR'语句更改为8080。据我所知,8080端口是80不能使用时使用的辅助号码。代码更改将非常简单,如下面的代码片段所示。

    app.listen(process.env.PORT || 8080, function(){})
    
    推荐文章