Я использую nodejs с модулем expressjs для создания веб-сервера. Моя текущая настройка этогоNodejs/Expressjs javascript: get where request from from
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 src="test.js"></script>
, он посылает запрос на получение test.js, я могу использовать REQ аргумент, чтобы увидеть, что запрос на test.js пришел со страницы HTML и получить полный путь к файлу html-страницы?
EDIT: Я пытаюсь написать функцию, которая служит для правильного индексного файла (index.html/.htm/.php и т. Д., Если вы просто вводите каталог в URL-адрес («localhost/tests/chat /») , но тогда проблема заключается в том, что когда он запрашивает файл javascript с индексной страницы, он возвращается слишком далеко назад в один каталог (ищет «localhost/tests/test.js» вместо «localhost/tests/chat/test.js»,), и работает только тогда, когда вы непосредственно ввести имя файла в URL ("локальный/тесты/чат/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 парсера, так что это не вариант