我正在尝试将我的node.js
应用程序部署到我的 Web 服务器。我在服务器端安装了所有东西,并且该应用程序在本地运行。当我尝试将其上传到服务器时,我似乎无法连接。它尝试加载并最终给我一个 504 超时错误。
这是我的代码:
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var expressValidator = require('express-validator');
var flash = require('connect-flash');
var multer = require('multer');
var app = express();
var fs = require('fs');
var mongoose = require('mongoose');
var unqID;
var http = require('http');
//http
http.createServer(function(req, res){
console.log('SmartMove Running');
mongoose.connect('mongodb://localhost/smartproperty');
var db = mongoose.connection;
var routes = require('./routes/index');
var articles = require('./routes/articles');
var categories = require('./routes/categories');
var manage = require('./routes/manage');
var manager = require('./routes/manager');
var adverts = require('./routes/adverts');
var upload = require('./routes/server');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
app.use(expressValidator({
errorFormatter: function(param, msg, value) {
var namespace = param.split('.')
, root = namespace.shift()
, formParam = root;
while(namespace.length) {
formParam += '[' + namespace.shift() + ']';
}
return {
param : formParam,
msg : msg,
value : value
};
}
}));
app.use(require('connect-flash')());
app.use(function (req, res, next) {
res.locals.messages = require('express-messages')(req, res);
next();
});
app.use('/', routes);
app.use('/articles', articles);
app.use('/categories', categories);
app.use('/manage', manage);
app.use('/manager', manager);
app.use('/adverts', adverts);
//res.end('Done');
}).listen(8080, '127.0.0.1');
//end http
//upload
app.use(bodyParser.json());
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
},
//filename: function (req, file, callback) {
//callback(null, file.fieldname + '-' + Date.now());
//}
filename: function (req, file, callback) {
var advert = new Advert();
var qryId = advert._id;
callback(null, unqID + '-' + Date.now());
}
});
var upload = multer({ storage : storage }).array('userPhoto',2);
//app.get('/',function(req,res){
// res.sendFile(__dirname + "/index.html");
//});
app.post('/api/photo',function(req,res){
upload(req,res,function(err) {
console.log(req.body);
console.log(req.files);
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
});
//end upload
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
我试图看看它是否会加载一个 res.end。然而,这是成功的,因为那条线根本没有任何负载。
如果有人可以提供帮助,那就太好了。
编辑
好的,所以我已经设法让它在我的服务器上部署,但现在这提出了一个不同的问题。所有文件都已上传,我可以看到它们,当服务器运行时,虽然它无法转到任何路由,而且我的 CSS 似乎还没有像在我的开发环境中那样完成。有谁知道为什么会这样,这似乎仍然是服务器端的一个问题,这就是我编辑的原因,但是如果我这样做有误,请告诉我,我会创建一个新问题。