“TypeError:无法读取未定义的属性‘应用’”
Posted
技术标签:
【中文标题】“TypeError:无法读取未定义的属性‘应用’”【英文标题】:"TypeError: Cannot read property 'apply' of undefined" 【发布时间】:2016-03-04 21:15:13 【问题描述】:使用 node、express、socket.io、jade 和 angular。收到错误:TypeError: Cannot read property 'apply' of undefined
。有什么建议吗?
index.js:
module.exports = function(app, res)
res.render('index', title: 'Express' );
var io = app.get('io');
io.on('connection', function(socket)
);
;
index.jade:
extends layout
block content
script.
var app = angular.module('hackigur', []);
var socket = io.connect();
var refreshTimer = 10;
app.controller('UpdateController', function($scope)
//socket.on('update', function(msg)
//$scope.refreshTimer = msg;
//$scope.$apply();
//);
setInterval(secondTick,1000);
function secondTick()
if(refreshTimer != 0)
refreshTimer -= 1;
$scope.refreshTimer = refreshTimer;
$scope.$apply();
;
);
h1= title
p Welcome to #title
div(ng-controller="UpdateController")
p(ng-bind="refreshTimer")
layout.jade:
文档类型 html html(ng-app="hackigur") 头 标题=标题 脚本(src = "/socket.io/socket.io.js") 脚本(src = "/js/angular/angular.min.js") 身体 阻止内容完全错误:
服务器监听 3000 端口 TypeError:无法读取未定义的属性“应用” 在 Server.(匿名函数) [as on] (D:\Projects\hackigur\node_modules\so cket.io\lib\index.js:364:15) 在 module.exports (D:\Projects\hackigur\server\api\index.js:30:8) 在 ...【问题讨论】:
仅供参考 index.js:30 是行:io.on('connection', function(socket) ...这段代码实际上在昨晚有效,我今晚又试了一次,但它死了。 能否请您发布整个 index.js?似乎错误发生在您未包含在此问题中的行上。 我突然想到你有多个 index.js(我的错)。你能至少澄清一下你提供了哪个 index.js 吗? 只有一个 index.js……另一个是 index.jade。我已经在上面发布了几乎整个 index.js;其余的只是一个我已经完全注释掉的大函数 index.js 我贴的是服务器/api/index.js;另一个我没有碰过的socket.io,它是在node_modules中为socket.io安装的任何npm 【参考方案1】:我的router
调用了我的index.js
在module.export
中传递了app
:
module.export = function (app)
app.get( ... , function(..., res)
require(index.js)(app)(res);
;
我需要在我的module.export
外部为app
声明一个变量:
var x;
module.export = function (app)
x = app;
app.get( ... , function(..., res)
require(index.js)(x)(res);
;
不完全理解它为什么起作用,但它似乎通过应用上述方法将正确的app
对象传递给app.get
。
【讨论】:
以上是关于“TypeError:无法读取未定义的属性‘应用’”的主要内容,如果未能解决你的问题,请参考以下文章