Мне нужно получить доступ к содержимому родительской папки к обслуживаемому содержимому, и относительная папка '..' из путей ресурсов в HTML не переносится на строку http server request.url узла.
const http = require("http");
const fs = require("fs");
const path = require("path");
const WebSocket = require("ws");
let loadedContent = [];
let root = ".";
let httpServer = http.createServer((req, res)=>{
console.log(req.url);
if (req.url === "/") {
req.url = "/novos.html";
} else {
req.url = path.join("/", req.url);
}
if (!loadedContent[req.url]) {
console.log(__dirname + req.url);
if (fs.existsSync(__dirname + req.url)) {
loadedContent[req.url] = fs.readFileSync(__dirname + req.url);
} else {
res.end("content does not exist");
return;
}
}
res.end(loadedContent[req.url]);
});
httpServer.listen(10209);
/*let wss = new WebSocket.Server({server:httpServer});
wss.on("connection", (ws)=>{
ws.on("message", (msg)=>{
console.log("Received", msg);
});
ws.send("Hi");
});*/
Мой HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>novos</title>
<style>
body {
margin:0px;
width:100vw;
height:100vh;
overflow:hidden;
background-color:black;
transition:all 1s;
color:rgb(163, 163, 163);
font-family:'Courier New', Courier, monospace;
}
#iLogo {
position:absolute;
width:100%;
top:25%;
animation-duration: 1.5s;
animation-name: logoAnim;
animation-iteration-count: 2;
animation-direction: alternate;
opacity:0;
cursor:text;
}
@keyframes logoAnim {
from {
opacity:0
}
to {
opacity:1
}
}
#iCmd {
position:absolute;
background:transparent;
color:inherit;
font-family:inherit;
font-style:italic;
font-size:2.5em;
width:50%;
left:25%;
bottom:40%;
border:none;
border-bottom-style:dashed;
border-width:1px;
border-color:grey;
animation-duration: 3s;
animation-name: cmdAnim;
animation-iteration-count: 1;
}
@keyframes cmdAnim {
0% {
opacity:0
}
98% {
opacity:0
}
100% {
opacity:1
}
}
</style>
</head>
<body>
<img id="iLogo" src="res/logo.svg" />
<input id="iCmd" value="$" />
<script src="../abbreviated_functions.js"></script>
<script src="../input.js"></script>
<script src="../xmath.js"></script>
<script src="novos.js"></script>
</body>
</html>
Я также пытался использовать "/ .." и "./.."
req.url, но возвращает" /xmath.js "независимо от этихтри попытки.
Я подумал, что, возможно, подключить мою веб-розетку к серверу http, возможно, ее обманывает, но я отключил ее, и никаких изменений.
Я посмотрел на документы http, чтобы узнать, если.... не было разрешено, но я ничего не нашел об этом.
edit- Итак, чтобы сформулировать мой вопрос вместо того, чтобы люди думали, что я хочу, чтобы они исправили мой код: я не понимаю, почему команды относительного пути вверхне передаются в req.url Это я?Это спецификация с узлом http?Я не могу понять источник проблемы здесь.