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で関数を呼び出すために開発者コンソールをブラウザで使用できないのはなぜですか?
'module.exports' - https://nodejs.org/api/modules.htmlを。違いはありませんが、IIFEはもう必要ありません。これは、すべてのモジュールコードが既にそのスコープ内に含まれているためです。 – Adam
あなたは 'myTimer'をエクスポートする必要があります – RidgeA