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) à ...
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.