【问题标题】:How to set up mongodb with express?如何用express设置mongodb?
【发布时间】:2017-01-12 21:04:24
【问题描述】:

Express App 新手,我正在尝试使用 express 和 node.js 设置 mongodb。如果我能在这方面得到一些帮助,我会遇到一些问题。我尝试添加目录引用,以便您了解。

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

2- 得到 SyntaxError: Unexpected reserved word for 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

};

【问题讨论】:

  • 在不知道./config 的目录结构的情况下很难确定问题。从外观上看,./config/environment 目录中没有index.js 文件,因此它是未定义的。是否必须尝试改用 require('./config/environment/development.js') 等特定文件?
  • config 在服务器下,服务器在根级别,正如我在 development.js 中提到的那样
  • ./config/environment 目录下还有哪些文件?如果只有development.js,那么您需要使用require('./config/environment/development.js'),因为默认情况下模块加载器不会解析该名称。
  • 第二期怎么样?
  • 再一次,如果不查看./config/express 中的代码,很难判断出了什么问题,但我猜你是在不支持某个功能的 Node.js 版本上运行它在文件中使用。如果您使用 ES6 功能,请确保您至少在 Node 6.x.x+ 上。

标签: javascript node.js mongodb express


【解决方案1】:

正如问题的 cmets 中所指出的,您的问题是您在旧版本的 Node.js 中使用了较新的 JavaScript 功能。要绕过当前错误,您应该在 server > config > express.js 中更改此行:

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

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

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

  • 在此处更新到 Node.js 的 latest version
  • 重构您的所有代码,删除所有 ECMAScript 2015 功能,以确保它适用于您的 Node.js 版本。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2019-05-22
    • 2018-12-16
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多