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
喜欢createServervar server = http.createServer(app); server.listen(...)