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;


2 回复

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);

解释

  1. 模块导入:在 server.js 中,我们使用 require('./requestHandlers') 导入了 requestHandlers.js 文件。
  2. 导出函数:在 requestHandlers.js 中,我们将 startupload 函数导出为模块的一部分。
  3. 路由逻辑:在 server.js 中定义了一个简单的路由逻辑,它根据请求的路径调用相应的处理函数。

通过上述步骤,你应该可以解决 Cannot find module './requestHandlers' 错误。确保路径正确,并且文件名与代码中的引用一致。

回到顶部