如何将此javascript模块更改为显示模块模式?
我有以下代码: server.js:如何将此javascript模块更改为显示模块模式?,javascript,Javascript,我有以下代码: server.js: var http = require("http"); function start() { function onRequest(request, response) { console.log("Request received."); response.writeHead(200, { "Content-Type": "text/plain" }); response.write("Hello
var http = require("http");
function start() {
function onRequest(request, response) {
console.log("Request received.");
response.writeHead(200, { "Content-Type": "text/plain" });
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
index.js:
var server = require('./server');
server.start();
我尝试将server.js转换为一个显示模块模式:
var http = require("http");
var server = function() {
function start() {
function onRequest(request, response) {
console.log("Request received.");
response.writeHead(200, { "Content-Type": "text/plain" });
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
return {
start: start
};
}();
但是我得到一个错误:TypeError:server.start不是一个函数
我犯了什么错误
谢谢。您忘记导出模块了
exports = server;
为什么要这样做?这只是时间上的倒退,在我们有好东西之前,比如实际的模块。你不是在导出
服务器<代码>变量服务器=需要('./服务器')代码>将导入一个空对象,因为您的模块不导出任何内容。你知道模块中的变量是模块的局部变量吗?其他模块只能访问导出的内容。因此,在这里添加IIFE以减少范围start
不会增加任何值。这真的让代码变得不必要的复杂。你能解释一下你所说的“实际模块”是什么意思吗?我并没有试图让它变得不必要的复杂,但我认为揭示模块模式应该有助于实现这一点?