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:
doctype html html(ng-app = "hackigur") head title = title script(src = "/socket.io /socket.io.js") script(src = "/js/angular/angular.min.js") body block content
完全なエラー:
ポート3000でリッスンするサーバー\ so cket.io\lib\index.js:364:15) module.exports(D:\ Projects\hackigur\server\api\index.js:30:8) ...
index.js
を呼び出したrouter
は、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
に渡すように見えました。