【问题标题】:Issues deploying NodeJS w/ MongoLab on Heroku在 Heroku 上使用 MongoDb 部署 Node JS 的问题
【发布时间】:2016-04-23 06:56:54
【问题描述】:

我在 Heroku 上部署我的应用时遇到问题。我的浏览器中不断出现一个屏幕显示应用程序错误。从我读到的内容来看,这是 MongoLab 的内容。

我已经在 heroku 上正确设置了我的 PROCESS.ENV.MONGOLAB_URI,但我无法让它工作。我还尝试为这个数据库添加一个新用户到 MongoLAB,即使那个用户也不能正常工作。

我是 Process.env.PORT,因为我使用的是 Socket.io。它在我的 app.js 中吗?

var express = require('express');
var http = require('http')
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');



var mongoose = require('mongoose');
mongoose.connect(process.env.MONGOLAB_URI || 'mongodb://localhost/queueThat');

var db = mongoose.connection;

var routes = require('./routes/index');

var app = express();
var server = http.createServer(app);
//Stuff for Sockets
var io = require('socket.io').listen(server);
//sockets

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
app.engine('html', require('ejs').renderFile);

// 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('/', routes);

//Connect to the Socket
io.on('connection', function(socket){
  socket.on('song send', function(song){
      io.emit('song send', song)
      console.log('artist on')
  })
  socket.on('artist send', function(artist){
      console.log('artist on')
      io.emit('artist send', artist)
  })

  //Disconnect
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });

});


// 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: {}
  });
});

var port = (process.env.PORT || 8000); 
server.listen(port, function() {
console.log("Listening on " + port);
});

module.exports = app;

我也尝试添加我的节点和 NPM 版本,但无济于事。有任何想法吗? Package.json 看起来像这样。

{
  "name": "queueThat",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "ejs": "^2.3.4",
    "express": "~4.13.1",
    "mongoose": "*",
    "morgan": "~1.6.1",
    "serve-favicon": "~2.3.0",
    "socket.io": "*"

  },
  "engines": {
    "node": "5.4.0",
    "npm": "3.3.12"
  }
}

【问题讨论】:

    标签: node.js mongodb heroku


    【解决方案1】:

    Application Error不代表MongoLAB有问题,不一定。

    为了清楚起见,您需要仔细检查几个地方:

    1. 您需要在项目的根文件夹中有正确的Procfile
    2. 注意postinstall npm 脚本。

    您还可以检查您在 heroku heroku logs -n 200 上的日志(如果需要,可以检查 200 行或更多行)以确定您遇到了什么问题。

    【讨论】:

    猜你喜欢
    • 2022-11-15
    • 2015-12-25
    • 1970-01-01
    • 2021-12-16
    • 2021-01-31
    • 2018-01-27
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多