Запустите приложение NodeJS на nodejitsu, все, что я получаю, это "не могу получить /"

Как часть моего обучения я хотел развернуть свое приложение на nodejitsu. Он работает нормально на моем локальном сервере, но на nodejitsu все, что я получаю, это

Cannot GET /

Я подумал, что это может быть связано с тем, что NODE_ENV настроен на работу на сервере, но я никогда не касался этого на своем локальном сервере. Я изменил его на nodejitsu для разработки, но все же я не могу заставить его работать.

После комментирования всего кода я думаю, что проблема в моем index.js, который я показываю ниже:

var express = require('express');//the framework
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
//var session = require('express-session');
var methodOverride = require('method-override');
var passport = require("passport");//for authentication
var LocalStrategy = require('passport-local').Strategy;//local users for passport
var http = require('http');
var path = require('path');
var db = require('./dataBase');//to connect to the db
var userRoles = require('./routingConfig').userRoles;
var accessLevels = require('./routingConfig').accessLevels;

var debug = false;

var db = new db('inmobiliaria', 'localhost', 3306, debug);

require('./passport')(passport, db, debug)
var app = express();

app.set('port', 1337);
app.use(methodOverride());
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }))
//app.use(session({ secret: 'SECRET' }));
app.use(passport.initialize());
app.use(passport.session());

app.use(function (req, res, next) {
    var role = userRoles.public;//default role
    var username = '';

    if (req.user) {
        role = req.user.role;
        username = req.user.username;
    }
    res.cookie('user', JSON.stringify({
        'username': username,
        'role': role
    }));

    next();
});

app.use('/', express.static(path.join(__dirname + '/../Client/')));
app.use("/lib", express.static(path.join(__dirname + '/../Client/lib/')));
app.use("/ctr", express.static(path.join(__dirname + '/../Client/Controllers/')));
app.use("/media", express.static(path.join(__dirname + '/../Client/media/')));
app.use("/views", express.static(path.join(__dirname + '/../Client/Views/')));
app.use("/srv", express.static(path.join(__dirname + '/../Client/Services/')));
app.use("/dct", express.static(path.join(__dirname + '/../Client/Directives/')));

require('./routes')(app, passport, db);
//require('./emailConfiguration');

http.createServer(app).listen(process.env.PORT || app.get('port'), function (err) {
    console.log("Express server listening on port " + app.get('port'));
    if (err) {
        throw err; // For completeness's sake.
    }
});

Я исследовал эту переменную, но я не уверен, что это как-то связано с ней. Это URL http://horaciotest.jit.su/, если вы хотите его увидеть. Это конфигурация? Я делаю то, что не должно быть сделано?

Спасибо, что нашли время.

РЕДАКТИРОВАТЬ:

мне удалось уменьшить количество ошибок до нескольких строк, я думаю. Как предложили ребята из nodejitsu, сейчас я пытаюсь использовать модуль node-static для обслуживания статических файлов, но я не могу заставить его работать вместе с express:

этот код работает на nodejitsu и моем локальном сервере (или, по крайней мере, не показывает никаких ошибок)

var statik = require('node-static');
var http = require('http');
var path = require('path');

var file = new (statik.Server)(path.join(__dirname + '/../Client/'));//index.html here
http.createServer(function (req, res) {
    console.log(path.join(__dirname + '/../Client/'));
    file.serve(req, res);
}).listen(8080);

но как только я добавляю express, я получаю ошибку, о которой упоминал выше:

var express = require('express');    
var statik = require('node-static');
var http = require('http');
var path = require('path');

var app = express();

var file = new (statik.Server)(path.join(__dirname + '/../Client/'));//index.html here
http.createServer(app, function (req, res) {
    console.log(path.join(__dirname + '/../Client/'));
    file.serve(req, res);
}).listen(8080);

Может кто-нибудь сказать мне, почему, когда я добавляю экспресс-приложение, я получаю ошибку? это может быть то, что мне нужно, чтобы заставить это работать на nodejitsu, спасибо!

1 ответ

Решение

Я выяснил, в чем проблема, надеюсь, это кому-нибудь поможет:

В моей структуре проекта было две папки: одна называлась Client, где все мои html и.js от angular куда. Другой папкой был WebServer, где у меня были все мои файлы nodejs.

Для развертывания на nodejitsu вы запускаете команду, которая jitsu deployэто, в свою очередь, запускает другую команду: npm pack, Эта команда создает файл.tgz со всеми данными в вашем каталоге nodejs, за исключением файла node_modules и любого файла, который начинается с ., Проблема в том, что если вы хотите, чтобы у меня были файлы вне этой папки, они не будут включены.

Решением является перемещение вашей клиентской папки внутри nodejs. Все, что вам нужно отправить на сервер, должно находиться в этой папке.

Другие вопросы по тегам