类型错误:无法读取 nodejs 应用程序中未定义的属性“方法”
TypeError : cannot read property 'method' of undefined in nodejs Application
我正在使用node.js和 socket.io 开发一个简单的聊天应用程序。当我连接到 socket.io 时,我遇到"无法读取未定义的属性'方法'"的错误。
这是应用程序.js文件代码:-
var express = require('express'),
app = express(),
path = require('path')
cookieParser = require('cookie-parser')
session = require('express-session')
config = require('./config/config.js'),
ConnectMongo = require('connect-mongo')(session),
mongoose = require('mongoose').connect(config.dbURL),
passport = require('passport'),
FacebookStrategy = require('passport-facebook').Strategy,
rooms = [] ;
app.set('views', path.join(__dirname , 'views'));
app.engine('html', require('hogan-express'));
app.set('view engine', 'html');
app.use(express.static(path.join(__dirname,'public')));
app.use(cookieParser());
var env = process.env.NODE_ENV || 'development';
if(env === 'development'){
// dev specific settings
app.use(session({secret:config.sessionSecret, saveUninitialized : true, resave : true}));
} else {
//Production specific settings
app.use(session({
secret : config.sessionSecret,
saveUninitialized : true,
resave : true,
store : new ConnectMongo({
// url : config.dbURL, (for Avoiding two seperate connection)
mongooseConnection:mongoose.connections[0],
stringify : true
})
}));
}
app.use(passport.initialize());
app.use(passport.session());
require('./auth/passportAuth.js')(passport , FacebookStrategy , config , mongoose);
require('./routes/routes.js')(express,app ,passport , config);
/* app.listen (3000 , function(){
console.log("ChatUp working on the Port 3000");
console.log('Mode:'+ env);
}); */
app.set('port', process.env.PORT || 3000);
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
require('./socket/socket.js')(io,rooms);
server.listen(app.get('port' , function(){
console.log('Chat Up on Port : '+ app.get('port'));
}))
这是我的聊天室.html srcipt :-
$(function() {
var host = '{{config.host}}';
var socket = io.connect(host + '/roomlist'); // http://localhost:3000/roomlist
socket.on('connect', function() {
console.log('Connection Established .. !');
})
})
JSON 文件包含"主机":"http://localhost:3000"
但是当我运行代码时出现错误:类型错误:无法读取未定义的属性"方法"
控制台错误:-
c:''Users''ANKUR SINGH''Desktop'ode''Chat App'ode_modules''express''lib''router''index.js:138 debug('dispatching %s %s', req.method, req.url); ^
类型错误: 无法读取未定义的
属性"方法" at Function.handle (c:''Users''ANKUR SINGH''Desktop'ode''Chat App'ode_modules''express''lib''router''index.js:138:33)
at EventEmitter.handle (c:''Users''ANKUR SINGH''Desktop'ode''Chat App'ode_modules''express''lib''application.js:173:10)
at Server.app (c:''Users''ANKUR SINGH''Desktop'ode''Chat App'ode_modules''express''lib''express.js:38:9)
at Server.g (events.js:260:16)
at emitNone (events.js:67:13)
at Server.emit (events.js:166:7)
at emitlisteneningNT (net.js:1263:10)
at nextTickCallbackWith1Arg (node.js:444:9)
在 process._tickCallback (节点.js:366:17)
at Module.runMain [as _onTimeout] (module.js:432:11)
at Timer.listOnTimeout (timers.js:92:15)
如何摆脱此错误。 ??
图片 :/router/index.js 文件 :-
错误图片
经过 9 个小时的连续挣扎。我已经找到了我的问题的解决方案。
错误代码:-
app.set('port', process.env.PORT || 3000 );
server.listen(app.get('port' , function(){
console.log('Chat Up on Port : '+ app.get('port'));
}));
和正确的代码:-
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Updated : Server listening at port %d', port);
});
参考链接是:-正确的代码参考
你的代码可以工作。缺少")"
app.set('port', process.env.PORT || 3000 );
server.listen(app.get('port') , function(){
console.log('Chat Up on Port : '+ app.get('port'));
});
如果您使用 app.js 作为 express 和 start.js作为"npm start",您所要做的就是确保应用程序被导出module.exports = app;
并在启动时.js您只需要求模块require('./app')
这工作正常。
声明变量时是否缺少一些逗号?
path = require('path')
cookieParser = require('cookie-parser')
session = require('express-session')
path = require('path'),
cookieParser = require('cookie-parser'),
session = require('express-session'),
- 将对象作为参数传递后的未定义属性
- 检查链接对象形式中未定义属性的最佳实践是什么
- PhantomJS中的evalute内部未定义属性
- 访问数字类型的未定义属性
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 返回未定义属性的脚本
- 类型错误:无法读取 ng-repeat 的未定义属性
- JavaScript-Disqus如何处理其“;disqus_config”;包含未定义属性的函数
- 是对HTMLElement#样式的未定义属性的赋值的返回值,保证与赋值相同
- 最好检查未定义属性或设置为空
- 如何解决这个未定义属性的node.js错误?
- 如何在JavaScript中挽救对象的未定义属性?
- AngularJS和PHP -注意:未定义属性:stdClass
- 主干模型删除未定义属性
- if else子句中未定义对象的未定义属性
- Javascript数组问题:无法读取未定义属性
- 当尝试使用未定义属性进行筛选时,Lodash将排除项
- 在Javascript数组的中途未定义属性
- Knockout arrayForEach未定义属性
- javascript中未定义属性的简写,初始化和赋值属性