我正在将nodejs与expressjs模块一起使用来创建Web服务器。我当前的设置是这个
var express = require("C:/Program Files/nodejs/node_modules/express")
var app = express();
var server = require('http').createServer(app).listen(80);
var io = require('C:/Program Files/nodejs/node_modules/socket.io').listen(server, {log:false});
var path = require("path");
fs = require("fs");
有没有办法使用
app.use(function(req,res,next){
//code
})
获取请求来自何处?例如,如果在html页面上,您具有script标签
<script src="test.js"></script>
它发送了一个检索test.js的请求,我可以使用req参数查看对test.js的请求来自html页面并获取html页面的完整文件路径吗?
编辑:我正在尝试编写一个提供正确索引文件(index.html / .htm / .php等)的函数,如果您只是在url中输入目录(“ localhost / tests / chat /”),则问题出在然后是,当它从索引页面请求javascript文件时,它返回的目录太远了(搜索“ localhost / tests / test.js”而不是“ localhost / tests / chat / test.js”),并且仅如果您直接在网址(“ localhost / tests / chat / index.html”)中输入文件名,则可以使用。我的函数:
app.use(function(req,res,next){
var getFullPath = path.join("public",req.path);
console.log(req.path);
if (fs.existsSync(getFullPath)) {
if (fs.statSync(getFullPath).isDirectory()) {
getFullPath = path.join(getFullPath,"index.html");
}
res.sendfile(getFullPath);
} else {
res.send("404 Not Found");
}
});
我知道你可以使用
app.use(express.static(__dirname + '/public'));
但这为我的自定义php解析器模块给我带来了问题,因此这不是一个真正的选择
我能够使用req.headers.referer来获取从中询问javascript文件的位置,因此可以指向javascript文件的正确位置。
getFullPath = path.join("public",req.headers.referer.split(req.host)[1],path.basename(req.path));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句