2017-04-25 18 views
0

データベースから連絡先/ユーザーを表示する簡単なアプリケーションを作成しています。私はオンラインで見つかったいくつかの参考文献に基づいて次のことをしました。私はエラーが発生しました 'モジュールが見つかりません'。パス/コントローラ/ ContactController 'nodeJsでコントローラをエクスポートできません

  1. これはMVCを使用する適切な方法ですか?私はMVCを使用するためにオンラインでmaysを見つけたので。ノードjsでMVCを使用する例をお勧めします。

app.js

var express = require('express'), 
http = require('http'), 
path = require('path'), 
mongoose = require('mongoose'); 

var app = express(); 
mongoose.connect("mongodb://localhost/contact"); 

app.use(express.bodyParser()); 
app.use(express.bodyParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.set('views', __dirname + '/view'); 
app.set('view engine', 'jade'); 

var controllerPath = __dirname + '/controller'; 

require('./models/contact')(mongoose); 
['Contact'].forEach(function(controller){ 
require(controllerPath + '/' + controller + 'Controller')(app, mongoose); 
}); 

http.createServer(app).listen(3000, function() { 
console.log('Listening on port 3000...') 
}) 

コントローラ/ contact.js

var Contact = require('../models/Contact'); 
var ContactController = function(app,mongoose){ 
var Contact = mongoose.model('Contact'); 
app.get('/contact', function(req, req){ 
    Contact.find({},function(err, contactinfo){ 

     res.render("contact",{contact: contactinfo }); 
    }); 
}) 
} 
module.exports = ContactController; 

モデル/ contact.js

var mongoose = require('mongoose'); 
var ContactSchema = new mongoose.Schema({ 
cid: String, 
name: String, 
phon: Number, 
contactwith: String 

}); 
module.exports = mongoose.model('Contact', ContactSchema); 

package.json

{ 
    "name": "SimpleAuth", 
    "version": "0.0.1", 
    "private": true, 
    "scripts": { 
     "start": "nodemon app.js" 
     }, 
    "dependencies": { 
     "express": "3.0.0rc4", 
     "jade": "*", 
      "mongoose": "*", 
      "nodemon": "*" 
     } 
     } 
+0

require(controllerPath + '/' + controller + 'Controller')(app, mongoose); 

この連結は、このファイル名と一致しません。 –

+0

@ S.D「var」を追加しましたが、同じエラーが発生しました。 –

+0

ファイルの名前を小文字に変更しようとしました。ノードの一部のバージョンで問題が発生しました。 – alpheus

答えて

0

変更foreachループあなたは間違ったパスを必要と

['contact'].forEach(function(controller){ 
    require(controllerPath + '/' + controller)(app, mongoose); 
}); 
+0

はい、うまくいきました。今私はエラーがコンパイルされた '連絡先'モデルを上書きすることはできません。 –

1

を次のように。 ContactController`が宣言された ``前var`キーワードがありませんコントローラ/ contact.js

関連する問題