无法将我的node.js应用程序部署到数字海洋

时间:2018-11-02 16:34:08

标签: javascript node.js backend digital-ocean

我正在尝试将node.js应用程序部署到数字海洋。当我这样做时,我的应用在本地运行良好:

node server.js

我使用ssh访问从gitlab克隆了我的存储库,并尝试做同样的事情,但是所有页面的工作都停留在加载阶段,最终它说我的IP地址花了太长时间才能响应。

ERR_CONNECTION_TIMED_OUT

最终,我打算使用某种东西使其永久运行,但是我将为此另行发表文章。

我通常使用我的IP地址:端口号来尝试查看我的应用程序。

这是我的server.js文件:

const express = require('express') ,app = express(), path = require('path'), 
socket = require('socket.io'), emailModule = require('./email.js'),
formValidationModule = require('./formValidation.js'), vimeoModule = require('./vimeo.js'),
port = process.env.PORT || 3000;


let 
    server = app.listen(port,function(){
        console.log('listening to requests...');
    }), 
    io = socket(server);

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
});

io.on('connection', (socket)=>{
    console.log('made a connection!');

    socket.on('getShortFilmsInfo', ()=>{
        vimeoModule.videos.short_films.forEach((y)=>{
            vimeoModule.getVideoThumbnail(y).then((data)=>{
                socket.emit('shortFilmsInfo', data);
            });
        })    
    });

    socket.on('getCommercials',()=>{
        vimeoModule.videos.commercials.forEach((x)=>{
            vimeoModule.getVideoThumbnail(x).then((data)=>{
                socket.emit('commercialInfo', data);
            })
        });

    });

    socket.on('email', (data)=>{
        if(formValidationModule.checkEmptyContact(data.client, data.email, data.name, 
            data.title, data.message)){
                socket.emit('invalidData');
            }
            else {
            /**
                 * * Here you need to set your email options which includes the clients email, destination email,
                 * subject and the text (the email content).
                 */
                emailModule.setMailOptions(data.email,/*'Info@project-gorilla.co.uk'*/'salay777@hotmail.co.uk'
                , data.client + ' ' + '(' +
                data.name + ')' + ' ' + data.title, data.message).then((mailOpts)=>{
                    emailModule.send(mailOpts);
                });
                console.log('email has been sent!');
            }
    });
});

1 个答案:

答案 0 :(得分:0)

您正在数字海洋中运行节点应用程序的端口被阻止外部访问。配置数字海洋,以将端口80443(http和https的默认端口)上的任何请求路由到内部nodejs应用程序。