在nodejitsu上运行NodeJS应用程序,我得到的只是"cannot get /"



作为我学习的一部分,我想将我的应用程序部署到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.
    }
});

我调查了这个变量,但我不确定它与它有什么关系。这是网址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,谢谢!

我找到了问题所在,希望能帮助到别人:

我的项目结构有两个文件夹:一个名为Client,我所有的html和.js从angular的地方。另一个文件夹是WebServer,我有我所有的nodejs文件。

为了部署到nodejitsu,你运行一个命令jitsu deploy,然后运行另一个命令:npm pack。该命令创建一个.tgz文件,其中包含nodejs目录中的所有数据,不包括node_modules文件和任何以.开头的文件。问题是,如果你像我一样在文件夹外有文件,它们不会被包括在内。

解决方案是将客户端文件夹移到nodejs文件夹中。您需要发送到服务器的所有内容都应该在这个文件夹中。

相关内容

  • 没有找到相关文章

最新更新