我正在阅读关于Node.js网络服务器的这个很好的教程:http://nodebeginner.org/ 在本教程的这一部分:http://nodebeginner.org/#whats-needed-to-route-requests中,他们展示了如何执行称为“注入依赖关系”的操作,以便将路由模块和服务器模块链接到主js文件 index.js 。
我已经尝试了他们在那里写的东西,但计算机不会喜欢这个。它向我显示一条错误消息: route is not defined '。
我不知道该怎么做,请帮我解决这个问题。我对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
答案 0 :(得分:1)
server.start(router.route);
。声明function start(){
没有参数。从未使用过这些论点。那为什么呢?
然后,参数的值为router.route
。这只是功能本身。它不会被称为任何地方。
答案 1 :(得分:0)
您需要将路由器文件包含在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();