2013-04-23 53 views
0

我正在重構我的server.js文件並嘗試合併MVC模式。我遇到了一個問題,試圖從我的routes.js訪問我的控制器。我已經嘗試了幾乎所有我能想到的絕對和相對路徑的變化,但我必須錯過一些東西。 這裏是我的目錄結構: enter image description here我該如何解決這個node.js路徑問題?

從我routes.js,這裏是我的代碼:

module.exports = function (app, passport, auth) { 
    var Clients = require('controllers/clients'); 
    app.get('/clients', Clients.list); 
} 

我不認爲這是相關的,但這裏是我的客戶控制器:

var mongoose = require('mongoose') 
    , Client = mongoose.model('Client'); 

exports.list = function(req, res) { 
    Client.find(function(err, clients) { 
     res.renderPjax('clients/list', { clients: clients, user: req.user }); 
    }); 
} 

這裏是試圖從路由訪問我的控制器時,我發現了錯誤:

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'controllers/clients' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at module.exports (/Users/sm/Desktop/express3-mongoose-rememberme/app/routes.js:5:16) 
    at Object.<anonymous> (/Users/sm/Desktop/express3-mongoose-rememberme/server.js:334:24) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 

我相信這是簡單的,我在看。我如何從 我的路線訪問我的控制器?

回答

2

要需要的東西是不是一個獨立的程序包(不node_modules),你需要使用一個明確的相對路徑:

require('./controllers/clients') 

欲瞭解更多信息,請參閱documentation

0

本地模塊

require(...)花費本地模塊

require('./controllers/clients') 

Installaed模塊

對於通過npm install -S foo安裝的模塊的相對路徑,使用語法

require('foo')