2017-01-12 28 views
-1

新的Express App,我试图用express和node.js来设置mongodb。我有一些问题,如果我能在这方面得到一些帮助。我试图添加目录refrences,所以你可以有想法。如何用express设置mongodb?

1- var config即将来临undefined不确定路径是否正确。

2-正在语法错误:意外的保留字为 require('./config/express')(app);

基本上试图让本地mongodb运行应用程序。

服务器> app.js

var express = require('express'); 
var mongoose = require('mongoose'); 
mongoose.Promise = require('bluebird'); 
var config = require('./config/environment'); 
var http = require('http'); 
var https = require('https'); 
var fs = require('fs'); 
var bodyParser = require('body-parser'); 
// Connect to MongoDB 
mongoose.connect(config.mongo.uri, config.mongo.options); 
mongoose.connection.on('error', function(err) { 
    console.error('MongoDB connection error: ' + err); 
    process.exit(-1); 
}); 


// Setup server 
var app = express(); 
var server = http.createServer(app); 


require('./config/express')(app); 
require('./routes')(app); 

// Start server 
function startServer() { 
    server.listen(config.port, config.ip, function() { 
     console.log('Express server listening on %d, in %s mode', config.port, app.get('env')); 
    }); 
} 

setImmediate(startServer); 

// Expose app 
exports = module.exports = app; 

服务器>配置> express.js

var express = require('express'); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 
var path = require('path'); 
var config = require('./config/environment'); 
var session = require('express-session'); 
var connectMongo = require('connect-mongo'); 
var mongoose = require('mongoose'); 
var mongoStore = connectMongo(session); 

export default function(app) { 
    var env = app.get('env'); 

    app.set('views', config.root + '/server/views'); 
    app.engine('html', require('ejs').renderFile); 
    app.set('view engine', 'html'); 
    /*app.use(compression());*/ 
    app.use(bodyParser.urlencoded({ 
     extended: false 
    })); 

    app.set('appPath', path.join(config.root, 'client')); 

    if ('development' === env || 'test' === env) { 
     app.use(express.static(path.join(config.root, '.tmp'))); 
     app.use(express.static(app.get('appPath'))); 
     app.use(morgan('dev')); 

服务器>配置>环境> development.js正如有人指出

module.exports = { 

    // MongoDB connection options 
    mongo: { 
    uri: 'mongodb://localhost/test-modeler-dev' 
    }, 

    // Seed database on startup 
    seedDB: false 

}; 
+0

如果不知道'。/ config'目录结构是什么,很难确定问题。从它的外观来看,'。/ config/environment'目录中没有'index.js'文件,因此它是未定义的。必须尝试使用​​像require('./ config/environment/development.js')'这样的特定文件吗? –

+0

配置位于服务器下,服务器位于根级别,正如我在development.js中提到的那样 – hussain

+0

“./config/ environment”目录中还有其他文件吗?如果只有'development.js',那么你需要使用'require('./ config/environment/development.js')',因为默认情况下模块加载器不会解析该名称。 –

回答

-1

在问题的评论中,你的问题是你正在使用较新版本的较新JavaScript功能的节点。为了解决当前的错误,你应该在服务器>配置> express.js改变这一行:

// ... 
export default function(app) { 
// ... 

// ... 
module.exports = function(app) { 
// ... 

这应该解决这个特定的问题。但是,如果你正在使用的代码是使用ECMAScript 2015年不是由您的节点的版本支持的其他功能,那么你有两种选择:

  • 更新到的Node.js的latest version这里。
  • 重构所有代码删除所有ECMAScript 2015功能,以确保它可以与您的Node.js版本一起使用。

希望这会有所帮助。