dimanche 4 avril 2021

Heroku error: node js code=H10 desc="App crashed" method=GET path="/" host=vkkran.herokuapp.com request_id=a6265a53-6c39-4b6f-a09d-c0760b6b4b9a fwd

I have error in start my site in heroku app. If we guess what error please answer. In my computer app good work in lokal host

its a script index.js

    const express = require('express');
const app = express();


/* Import config */
const config = require('./src/config');

/* Choose a port for start a server */
const port = process.env.PORT || 8080;

/* Import express addons */
const bodyParser = require('body-parser');
const cors = require('cors');

/* Import crypto modules */
const qs = require('querystring');
const crypto = require('crypto');

/* Import user model */
const { User } = require('./src/mongo');

/* Import rewards array */
const rewards = require('./src/rewards');

/* Import VK Coin API */
const coin = require('./src/coinApi');

/* Use express addons */
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());

app.get('*', async (req, res) => {
    return res.send('Oops.. You\'re busted! ^_^\nPlease, leave from this page.');
});

app.post('/getUserInformation', async (req, res) => {

    if (!req.body.sign) {
        return res.send('Bad request data');
    }

    const urlParams = qs.parse(req.body.sign.replace(/(?:\?)/g, ''));
    const ordered = {};

    Object.keys(urlParams).sort().forEach((key) => {
        if (key.slice(0, 3) === 'vk_') {
            ordered[key] = urlParams[key];
        }
    });
    
    const stringParams = qs.stringify(ordered);
    const paramsHash = crypto
    .createHmac('sha256', config.secretKey)
    .update(stringParams)
    .digest()
    .toString('base64')
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=$/, '');

    if (paramsHash !== urlParams.sign) {
        return res.send('Invalid request data');
    }

    const user = Number(ordered.vk_user_id);

    const result = await User.find({ user_id: user });
    const data = result[0];

    if (!data) {

        const newUser = new User({
            user_id: user,
            viewed: 0,
            next: 0,
            refferer: null,
            refEarned: 0
        });

        return newUser.save((error) => {

            if (error) {
                return res.statusCode(500).send('Internal Server Error');
            }

            return res.send({
                viewed: 0,
                left: 100,
                earnedByRef: 0
            });

        });

    }

    const currentReward = rewards.findIndex(element => element.reward <= data.viewed) + 1;
    const left = rewards[currentReward + 1].views - data.viewed;

    return res.send({
        viewed: data.viewed,
        left: left,
        earnedByRef: data.refEarned
    });

});

app.post('/viewAd', async (req, res) => {

    if (!req.body.sign || !req.body.key) {
        return res.send('Bad request data');
    }

    req.body.key = req.body.key.split('-');

    if (req.body.key[0].length < 32 || Number(req.body.key[1]) < 0 || Number(req.body.key[2]) < Date.now() - 86400000) {
        return res.send('Bad request key');
    }

    const urlParams = qs.parse(req.body.sign.replace(/(?:\?)/g, ''));
    const ordered = {};

    Object.keys(urlParams).sort().forEach((key) => {
        if (key.slice(0, 3) === 'vk_') {
            ordered[key] = urlParams[key];
        }
    });
    
    const stringParams = qs.stringify(ordered);
    const paramsHash = crypto
    .createHmac('sha256', config.secretKey)
    .update(stringParams)
    .digest()
    .toString('base64')
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=$/, '');

    if (paramsHash !== urlParams.sign) {
        return res.send('Invalid request data');
    }

    const user = Number(ordered.vk_user_id);

    const result = await User.find({ user_id: user });
    const data = result[0];

    if (!data) {

        const newUser = new User({
            user_id: user,
            viewed: 0,
            next: 0,
            refferer: null,
            refEarned: 0
        });

        return newUser.save((error) => {
            if (error) {
                return res.statusCode(500).send('Internal Server Error');
            }
        });

    }

    if (data.next > Date.now()) {
        return res.send('Wait 3 seconds');
    }

    const currentRewardIndex = rewards.findIndex(element => element.reward <= data.viewed) + 1;
    const currentReward = rewards[currentRewardIndex].reward;

    await coin.api.sendPayment(user, currentReward * 1000, false);

    data.viewed += 1;
    data.next = Date.now() + 3000;

    const refResult = await User.find({ user_id: data.refferer });
    const refData = refResult[0];

    if (refData) {

        const reffererReward = currentReward >= 1000 ? 1000 : currentReward;
        refData.refEarned += reffererReward;

        await coin.api.sendPayment(data.refferer, reffererReward * 1000, false);
        await refData.save();

    }

    return data.save((error) => {

        if (error) {
            return res.statusCode(500).send('Internal Server Error');
        }

        return res.send({
            response: true
        });

    });

});

app.post('/badAd', async (req, res) => {

    if (!req.body.sign || !req.body.key) {
        return res.send('Bad request data');
    }

    req.body.key = req.body.key.split('-');

    if (req.body.key[0].length < 32 || Number(req.body.key[1]) < 0 || Number(req.body.key[2]) < Date.now() - 86400000) {
        return res.send('Bad request key');
    }

    const urlParams = qs.parse(req.body.sign.replace(/(?:\?)/g, ''));
    const ordered = {};

    Object.keys(urlParams).sort().forEach((key) => {
        if (key.slice(0, 3) === 'vk_') {
            ordered[key] = urlParams[key];
        }
    });
    
    const stringParams = qs.stringify(ordered);
    const paramsHash = crypto
    .createHmac('sha256', config.secretKey)
    .update(stringParams)
    .digest()
    .toString('base64')
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=$/, '');

    if (paramsHash !== urlParams.sign) {
        return res.send('Invalid request data');
    }

    const user = Number(ordered.vk_user_id);

    const result = await User.find({ user_id: user });
    const data = result[0];

    if (!data) {

        const newUser = new User({
            user_id: user,
            viewed: 0,
            next: 0,
            refferer: null,
            refEarned: 0
        });

        return newUser.save((error) => {
            if (error) {
                return res.statusCode(500).send('Internal Server Error');
            }
        });

    }

    if (data.next > Date.now()) {
        return res.send('Wait 3 seconds');
    }

    const currentReward = 10;

    await coin.api.sendPayment(user, currentReward * 1000, false);

    data.viewed += 1;
    data.next = Date.now() + 3000;

    const refResult = await User.find({ user_id: data.refferer });
    const refData = refResult[0];

    if (refData) {

        const reffererReward = 10;
        refData.refEarned += reffererReward;

        await coin.api.sendPayment(data.refferer, reffererReward * 1000, false);
        await refData.save();

    }

    return data.save((error) => {

        if (error) {
            return res.statusCode(500).send('Internal Server Error');
        }

        return res.send({
            response: true
        });

    });

});

app.post('/joinRefferal', async (req, res) => {

    if (!req.body.sign || !req.body.user) {
        return res.send('Bad request data');
    }

    const urlParams = qs.parse(req.body.sign.replace(/(?:\?)/g, ''));
    const ordered = {};

    Object.keys(urlParams).sort().forEach((key) => {
        if (key.slice(0, 3) === 'vk_') {
            ordered[key] = urlParams[key];
        }
    });
    
    const stringParams = qs.stringify(ordered);
    const paramsHash = crypto
    .createHmac('sha256', config.secretKey)
    .update(stringParams)
    .digest()
    .toString('base64')
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=$/, '');

    if (paramsHash !== urlParams.sign) {
        return res.send('Invalid request data');
    }

    const user = Number(ordered.vk_user_id);

    const result = await User.find({ user_id: user });
    const data = result[0];

    if (!data || data.refferer || req.body.user === user || Number(req.body.user) < 1) {
        return res.send('Invalid request data');
    }

    data.refferer = req.body.user;

    return data.save((error) => {

        if (error) {
            return res.statusCode(500).send('Internal Server Error');
        }

        return res.send({
            response: true
        });

    });

});

app.post('*', async (req, res) => {
    return res.send('Bad request route');
});

/* Start */
app.listen(port, () => console.log(`Started at port ${port}`));


error heroku app
    2021-04-04T15:00:45.769709+00:00 heroku[web.1]: State changed from starting to crashed
2021-04-04T15:00:47.326538+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=vkkran.herokuapp.com request_id=a6265a53-6c39-4b6f-a09d-c0760b6b4b9a fwd="194.37.1.112" dyno= connect= service= status=503 bytes= protocol=https
2021-04-04T15:00:47.576051+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=vkkran.herokuapp.com request_id=81fef08a-c1a3-4aa5-8072-464ef2e8b0d7 fwd="194.37.1.112" dyno= connect= service= status=503 bytes= protocol=https

I read the articles and they said that you need to specify the port, but I already have it indicated as they said

please excuse, it my first quastion

Я русский, если вы тоже то ответьте по Русски.




Aucun commentaire:

Enregistrer un commentaire