web-dev-qa-db-fra.com

"TypeError: Impossible de lire la propriété 'appliquer' de non défini"

Utilisation de node, express, socket.io, jade et angular. Obtenir l'erreur: TypeError: Cannot read property 'apply' of undefined. Aucune suggestion?

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:

 doctype html 
 html (ng-app = "hackigur") 
 head 
 title = title 
 script (src = "/socket.io /socket.io.js")
 script (src = "/js/angular/angular.min.js")
 corps 
 contenu du bloc 

Erreur complète:

 Serveur écoutant sur le port 3000 
 TypeError: Impossible de lire la propriété 'apply' de 
 Non défini sur le serveur. (Fonction anonyme) [comme sur] (D:\Projects\hackigur\node_modules\so 
 cket.io\lib\index.js: 364: 15) 
 sur module.exports (D:\Projects\hackigur\server\api\index.js: 30: 8) à ...
10
glog

Mon router qui a appelé mon index.js passé app dans le module.export En tant que tel:

module.export = function (app) {
    app.get( ... , function(..., res) { 
        require(index.js)(app)(res);
};

Je devais déclarer une variable pour app externe à mon module.export:

var x;
module.export = function (app) {
    x = app;
        app.get( ... , function(..., res) { 
        require(index.js)(x)(res);
};

Je ne comprends pas bien pourquoi cela a fonctionné, mais il semble passer le bon objet app à app.get en appliquant ce qui précède.

8
glog