node js TypeError:无法使用cloud9 IDE读取未定义的属性'get'

问题描述:

我正在使用cloud9 ide并获得标题中所述的错误。 文件结构看起来像这样node js TypeError:无法使用cloud9 IDE读取未定义的属性'get'

client/ 
    views/ 
    -index.ejs 
    routes/ 
    -index.js 
-server.js 

server.js文件

var path = require('path'); 
var async = require('async'); 
var express = require('express'); 
var router = express(); 
var server = http.createServer(router); 

router.use(express.static(path.resolve(__dirname, 'client'))); 


router.set('view engine','ejs'); 
//app.set('views','app/views'); 
router.locals.siteTitle = "Meetups"; 

//router.use(express.static(path.resolve('./public'))); 
router.use(require('./client/routes/index')); 
router.use(require('./client/routes/speaker')); 
server.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0", function(){ 
    var addr = server.address(); 
    console.log("Chat server listening at", addr.address + ":" + addr.port); 
}); 

虽然我的路由文件夹内index.js正在接收错误

TypeError: Cannot read property 'get' of undefined router.get('/',function(req,res){

var express = require('express'); 
var router = express.Router(); 
    router.get('/',function(req,res){ 
    res.render('index',{ 
    pageTitle:'Home', 
    pageID:'home', 
    }); 
}); 

module.exports = router; 

我已将您的代码复制到我的c9 ide。

server.js中的第一个问题需要http模块。

var http = require("http"); 

而我删除了这行,因为你没有共享这个文件。

router.use(require('./client/routes/speaker')); 

它工作。至少,Node没有抛出任何错误。

,聊天服务器在听0.0.0.0:8080

但是我对你的一些建议。

  • 首先,在server.js中,请将“router”变量重命名为“app”,因为它不是路由模块。
  • 对于公用文件夹,请勿使用客户端文件夹,请创建名为“public”的文件夹。因为你有客户端文件夹中的路线,视图等。
  • 对于require表达式,请尝试使其位于文件的顶部。
var routes = require('./client/routes'); 

// some code ... 

app.use('/', routes); 
  • 和进口只有一个路由的文件。在路线/ index.js导入其他途径文件

  • 我之前server.listen

var server = http.createServer(app); 
server.listen(...) 
喜欢createServer