2017-11-21 13 views
0

JavaのコードからノードJSにゆっくりと変換するモジュール化されたJavaScriptコードを書く際に、このコードが機能しない理由を理解できません。ノードJS未定義の関数を要求する

ノードServerコード:

const wceTimer = require('./myTimer'); 

const http = require('http'); 

const hostname = '127.0.0.1'; 
const port = 3000; 

const server = http.createServer((req, res) => { 
    res.statusCode = 200; 
    res.setHeader('Content-Type', 'text/plain'); 
    res.end('Hello World\n'); 
}); 

server.listen(port, hostname,() => { 
    console.log('Server running at http://' + hostname + ':' + port + '/'); 
    console.log(typeof wceTimer); 
    console.log(typeof wceTimer.getTime); 
}); 

ここでは私のモジュールコードです:

var myTimer = (function(){ 

    var currentTimeMS = -1; 
    var timerInterval; 

    function getTime(){ 
     return currentTime; 
    } 

    function getTimeFormatted(){ 
     if(currentTime <= 0) { 
      return "undefined"; 
     } else { 
      return new Date(currentTimeMS).toUTCString(); 
     } 
    } 

    function advanceTime(){ 
     if(currentTime <= 0) { 
      this.currentTimeMS = 946684800000; 
     } else { 
      this.currentTimeMS = this.currentTimeMS + 1000; 
     } 
    } 

    function startTimer(){ 
     timerInterval = setInterval(advanceTime, 3000); 
    } 

    function stopTimer(){ 
     clearInterval(timerInterval); 
    } 

    return { 
     startTimer: startTimer, 
     stopTimer: stopTimer, 
     getTime: getTime, 
     getTimeFormatted: getTimeFormatted 
    }; 

})(); 

はなぜserver.listen方法でライン3は未定義で失敗しますか? myTimerで関数を呼び出すために開発者コンソールをブラウザで使用できないのはなぜですか?

+0

'module.exports' - https://nodejs.org/api/modules.htmlを。違いはありませんが、IIFEはもう必要ありません。これは、すべてのモジュールコードが既にそのスコープ内に含まれているためです。 – Adam

+0

あなたは 'myTimer'をエクスポートする必要があります – RidgeA

答えて

3

あなたのモジュールが何もエクスポートしません:

module.exports = myTimer; 
+0

これはノードjs固有のコマンドですか? – wce2

+0

これは、Node.js内のモジュールであるCommonjsモジュールをエクスポートする方法です – elclanrs

関連する問題