Nodejs 在跟着《node.js入门》学习的时候出现Error Cannot find module './requestHandlers'
Nodejs 在跟着《node.js入门》学习的时候出现Error Cannot find module './requestHandlers’
server.js文件如下 var http = require(“http”); var url=require(“url”);
function start(route,handle) { function onRequest(request, response) { var pathname=url.parse(request.url).pathname;//这里的pathname是访问的url,解析出来 console.log("request for "+pathname+“received.”);
route(handle,pathname);
response.writeHead(200, {“Content-Type”: “text/plain”});
response.write(“Hello World”);
response.end();
}
http.createServer(onRequest).listen(8888); console.log(“Server has started.”); }
function start() { console.log(“Request handler ‘start’ was called.”); }
function upload() { console.log(“Request handler ‘upload’ was called.”); }
exports.upload = upload; exports.start = start;
Nodejs 在跟着《node.js入门》学习的时候出现Error Cannot find module ‘./requestHandlers’
当你在学习Node.js时,如果遇到 Error: Cannot find module './requestHandlers'
这个错误,通常是因为模块路径不正确或者模块文件不存在。以下是一个详细的解决方案,包括代码示例和解释。
问题描述
假设你有一个 server.js
文件,并且在其中引用了一个名为 requestHandlers
的模块,但是你遇到了 Cannot find module './requestHandlers'
错误。
示例代码
首先,确保你的 server.js
文件中正确地引入了 requestHandlers
模块。假设 requestHandlers
是一个包含处理程序函数的对象。
// server.js
var http = require('http');
var url = require('url');
var requestHandlers = require('./requestHandlers'); // 引入requestHandlers模块
function start(route, handle) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname; // 解析请求的URL
console.log("Request for " + pathname + " received.");
route(handle, pathname); // 调用路由函数
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;
接下来,创建 requestHandlers.js
文件,该文件应该导出所需的处理程序函数:
// requestHandlers.js
function start(response) {
console.log("Request handler 'start' was called.");
response.writeHead(200, {"Content-Type": "text/html"});
response.write("<html><body><h1>Hello, Start Page!</h1></body></html>");
response.end();
}
function upload(response) {
console.log("Request handler 'upload' was called.");
response.writeHead(200, {"Content-Type": "text/html"});
response.write("<html><body><h1>Hello, Upload Page!</h1></body></html>");
response.end();
}
module.exports = {
start: start,
upload: upload
};
路由函数
为了使代码能够正常工作,还需要一个路由函数来调用相应的处理程序:
// route.js
function route(handle, pathname) {
console.log("About to route a request for " + pathname);
if (typeof handle[pathname] === 'function') {
handle[pathname]();
} else {
console.log("No request handler found for " + pathname);
}
}
exports.route = route;
最后,在 server.js
中使用路由函数:
// server.js
var http = require('http');
var url = require('url');
var requestHandlers = require('./requestHandlers');
var route = require('./route');
function start() {
var handle = {
'/': requestHandlers.start,
'/start': requestHandlers.start,
'/upload': requestHandlers.upload
};
route(route, handle); // 使用路由函数
}
exports.start = start;
总结
通过以上步骤,你应该可以解决 Cannot find module './requestHandlers'
错误。关键在于确保模块路径正确,并且模块文件存在并且正确导出了所需的函数。希望这些代码示例和解释能帮助你顺利解决问题。
根据你的描述,错误 Error Cannot find module './requestHandlers'
通常是因为 Node.js 找不到你指定的模块。这可能是由于路径错误或文件名不匹配导致的。
示例代码
假设你的项目结构如下:
/project-root
/lib
server.js
requestHandlers.js
requestHandlers.js
文件
确保你有一个名为 requestHandlers.js
的文件,内容如下:
function start() {
console.log("Request handler 'start' was called.");
}
function upload() {
console.log("Request handler 'upload' was called.");
}
module.exports.start = start;
module.exports.upload = upload;
server.js
文件
确保你在 server.js
中正确引用了 requestHandlers.js
模块:
var http = require('http');
var url = require('url');
var requestHandlers = require('./requestHandlers');
function start(route, handle) {
function onRequest(request, response) {
var pathname = url.parse(request.url).pathname; // 解析出访问的 URL
console.log("Request for " + pathname + " received.");
route(handle, pathname);
response.writeHead(200, { "Content-Type": "text/plain" });
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
function route(handle, pathname) {
console.log("About to route a request for " + pathname);
if (typeof handle[pathname] === 'function') {
handle[pathname]();
} else {
console.log("No request handler found for " + pathname);
}
}
var handle = {
'/': requestHandlers.start,
'/start': requestHandlers.start,
'/upload': requestHandlers.upload
};
start(route, handle);
解释
- 模块导入:在
server.js
中,我们使用require('./requestHandlers')
导入了requestHandlers.js
文件。 - 导出函数:在
requestHandlers.js
中,我们将start
和upload
函数导出为模块的一部分。 - 路由逻辑:在
server.js
中定义了一个简单的路由逻辑,它根据请求的路径调用相应的处理函数。
通过上述步骤,你应该可以解决 Cannot find module './requestHandlers'
错误。确保路径正确,并且文件名与代码中的引用一致。