0

我正在尝试将我的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 似乎还没有像在我的开发环境中那样完成。有谁知道为什么会这样,这似乎仍然是服务器端的一个问题,这就是我编辑的原因,但是如果我这样做有误,请告诉我,我会创建一个新问题。

4

0 回答 0