Внедрение зависимостей в Node.js - PullRequest
0 голосов
/ 01 декабря 2011

Я читаю этот хороший урок о веб-серверах Node.js: http://nodebeginner.org/ В этой части урока: http://nodebeginner.org/#whats-needed-to-route-requests они показывают, как сделать то, что называется «зависимостями внедрения», чтобысвязать модуль route и модуль server с основным файлом js index.js .

Я попробовал именно то, что они пишутно компьютер не понравится.Он показывает мне сообщение об ошибке: маршрут не определен '.Я не знаю, что делать, пожалуйста, помогите мне с этим .. Я довольно новичок в Node.js и никогда раньше не видел такого рода инъекций зависимостей.
Спасибо!

Вот содержимое файла index.js:

var server = require("./myHttp");
var router = require("./router");

server.start(router.route);

Вот файл myHttp.js:

var http = require("http");
var url = require("url");

function start(){
function onRequest(request, response) {
  var pathname = url.parse(request.url).pathname;
  console.log("Request for "+ pathname + " recieved.");

  route(pathname);

  response.writeHead(404, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}

http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}

exports.start = start;  

Вот файл router.js:

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

exports.route = route;  

Я запускаю следующую команду в cmd: узел index.js

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

server.start(router.route); вызывается с аргументом.function start(){ объявлено без аргументов.Аргументы никогда не используются.Тогда почему он там?

А затем значение аргумента равно router.route.Что просто функция сама по себе.Это нигде не называется.

0 голосов
/ 01 декабря 2011

Вместо этого вам нужно включить файл маршрутизатора в файл myHttp.js:

var http = require("http");
var url = require("url");
var router = require("./router");

function start(){
function onRequest(request, response) {
  var pathname = url.parse(request.url).pathname;
  console.log("Request for "+ pathname + " recieved.");

  route(pathname);

  response.writeHead(404, {"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("./myHttp");

server.start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...