Как определить имя пути, извлеченное из модулей URL?

Это фрагмент моего кода для файла server.js. этот файл импортирует модуль http из http, используя формат ES6, также требуется URL-адрес, чтобы иметь возможность извлекать различные части URL-адреса. Я определил переменную с именем pathname и установил ее равной url.paerse(req.url).pathname

import { createServer } from 'http'; 

let url = require("url");
function start(route) {

  function onRequest(req,res){
    let pathname =url.parse(req.url).pathname;
    console.log(`Request for ${pathname} recieved`);
    route(pathname);
    res.writeHead(200, {"content-type":"text/plain"});
    res.write("Good afternoon Paullaster");
    res.end();
  }

  createServer(onRequest).listen(8080);
  console.log("Response ready");
}

export { start};

У меня также есть файл router.js, который должен запрашивать извлеченные имена путей.

function route(){
  console.log(`About to route a request for ${pathname} `);
}

export {route};

Затем у меня есть файл index.js, куда я импортирую все свои модули, и я использую index.js в качестве точки входа в свое приложение. Я импортирую функцию запуска из файла server.js и требую маршрутизатор из моего файла router.js.

import {start} from "./server";

let router = require("./router");
start(router.route); 

Когда я запускаю свой код, я получаю следующую ошибку

                         ```PS C:\Users\paullaster-geek\OneDrive\Desktop\Projects\Dive node> node -r 
                            esm index.js
                            Response ready
                            Request for / recieved
                            ReferenceError: pathname is not defined
                            at route (C:\Users\paullaster-geek\OneDrive\Desktop\Projects\Dive 
                            node\router.js:2:49)
                            at Server.onRequest (C:\Users\paullaster- 
                            geek\OneDrive\Desktop\Projects\Dive node\server.js:9:9)
                            at Server.emit (events.js:314:20)
                            at Server.EventEmitter.emit (domain.js:486:12)
                            at parserOnIncoming (_http_server.js:781:12)
                            at HTTPParser.parserOnHeadersComplete (_http_common.js:119:17)
                            PS C:\Users\paullaster-geek\OneDrive\Desktop\Projects\Dive node> 
                             

person Paullaster Okoth    schedule 27.07.2020    source источник


Ответы (1)


Вы выдаете в этой декларации функции. Вы должны получить pathname в качестве параметра:

function route(pathname){
  console.log(`About to route a request for ${pathname} `);
}
person David Rissato Cruz    schedule 27.07.2020
comment
функция route(pathname){} работала хорошо. - person Paullaster Okoth; 28.07.2020