学習の一環として、アプリを nodejitsu にデプロイしたいと考えていました。私のローカルサーバーでは正常に動作していますが、nodejitsuではすべてが得られます
Cannot GET /
サーバー上でNODE_ENVが本番環境に設定されていることに関係があるのではないかと思いましたが、ローカルサーバーではこれに触れたことはありません。ノードジツで開発に変更しましたが、それでも動作しません。
すべてのコードにコメントした後、問題は以下に示す 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/の URLです。この構成ですか?私はしてはいけないことをしていますか?
お時間をいただきありがとうございます。
編集:
エラーケースを数行に減らすことができたと思います。nodejitsu の人たちが提案したように、私は今モジュール node-static を使用して静的ファイルを提供しようとしていますが、エクスプレスに沿って動作させることはできません:
このコードは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);
しかし、エクスプレスを追加するとすぐに、上記のエラーが発生します。
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);
Express アプリを追加するとエラーが発生する理由を教えてもらえますか? これをnodejitsuで動作させるために必要なものかもしれません、ありがとう!