2016-12-14 67 views
0

我有一臺運行在我的服務器上的node.js express服務器。我最近遷移到一個新的服務器,以前的代碼已停止工作。Node.js路由不工作node.js + express服務器

這裏是我的服務器

var fs = require('fs'); 
var express = require('express'); 
var routes = require('./routes'); 
var https = require('http'); 
var path = require('path'); 
var socketio = require('socket.io'); 
var util = require('util'); 
var url = require('url'); 
var HashMap = require('hashmap').HashMap; 
var sizeOf = require('image-size'); 
var DBWrapper = require('node-dbi').DBWrapper; 
var DBExpr = require('node-dbi').DBExpr; 
var dbConnectionConfig = { host: 'localhost', user: 'mps', password: 'password', database: 'mps_schools' }; 
dbWrapper = new DBWrapper("pg", dbConnectionConfig); 
dbWrapper.connect(); 

var app = express(); 

app.set('port', process.env.PORT || 3001); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 


app.get('/', routes.index); 

的設置在這行代碼是打破

app.get('/', routes.index); 

日誌記錄 「routes.index」 來安慰,我得到 「未定義」

以下是錯誤日誌:

/home/mps/node_modules/express/lib/router/index.js:291 
throw new Error(msg); 
    ^
Error: .get() requires callback functions but got a [object Undefined] 
at /home/mps/node_modules/express/lib/router/index.js:291:11 
at Array.forEach (native) 
at Router.route (/home/mps/node_modules/express/lib/router/index.js:287:13) 
at Router.(anonymous function) [as get] (/home/mps/node_modules/express/lib/router/index.js:318:16) 
at Function.app.(anonymous function) [as get] (/home/mps/node_modules/express/lib/application.js:412:26) 
at Object.<anonymous> (/home/mps/app22.js:62:5) 
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) 

我做錯了什麼?謝謝

+1

很難說,但很明顯'routes'導入失敗。可以是任何事情,但我會確保你的環境是「相同的」,你的構建過程是完整的,等等。 –

+0

同意@DaveNewton。您的導入(require('./ routes');)失敗。發佈routes.js代碼和您的項目路徑結構。否則,很難幫助更多。 – deChristo

+0

可能是因爲版本差異? – user2238284

回答

0

嗨,這可能看起來愚蠢,但我沒有看到它的片段。你確定你已經添加了 'app.listen(PORT);' 否則,你可能會添加你的軟件包配置,那裏可能有些東西。 這通常是一個環境變化。你以前的系統是什麼,以及你現在託管什麼系統。 希望這給了一點清晰。

+0

是的,我已經做到了。 – user2238284

+0

'listen'不會解決失敗的'require'問題。 –

0

我得到它的工作。我改變了以下導入

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

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

,並從app.get我從

app.get('/', routes.index); 

改爲

app.get('/', routes);