我有以下文件: app.js
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(8000);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
index.html(此处仅显示' head'):
<html lang="en" ng-app="Client">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, target-densitydpi=device-dpi"/>
<link rel="stylesheet" type="text/css" href="css/app.css"/>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
<link rel="stylesheet" type="text/css" href="css/slider.css"/>
<title>Web Client: Robot control</title>
</head>
我首先执行我的nodejs服务器:node app.js 我跑的时候
http://localhost:8000/index.html
即使请求是针对不同的文件,例如:css / app.css,服务器(app.js) 返回index.html文件。所以我的输出非常错误。
我可以知道如何在app.js中解析请求,获取url字段,然后从中提取所需的文件名吗?
谢谢。
解决 通过执行以下操作 -
var pathname = url.parse(req.url).pathname;
console.log("Request for " + pathname + " received.");
fs.readFile(__dirname + pathname,
您还需要以下一行:
var url = require('url');
答案 0 :(得分:0)
req.url
这个变量是你需要的,如果你请求127.0.0.1:8000/index.html,req.url是/index.html;如果您请求127.0.0.1:8000/css/filename,req.url是/ css / filename