#javascript #node.js #module #mime
Вопрос:
Консоль пишет следующее: «Не удалось загрузить сценарий модуля: ожидался сценарий модуля JavaScript, но сервер ответил типом MIME «». Строгая проверка типа MIME применяется для сценариев модулей в соответствии со спецификацией HTML». Я почти уверен, что все делаю правильно, сервер устанавливает заголовок «текст/javascript» при ответе на запрос. Я откровенно утешаю.запишите то, что я указываю в WriteHeader, и там есть «текст/javascript», но браузер по какой-то причине показывает пустую строку «».
HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="./StylesCSS/main-style.css">
</head>
<body>
DOC
<script type="module" src="./JScripts/init.js"></script>
</body>
</html>
сервер:
const fs = require("fs");
const http = require("http");
let { _mainMap } = require("./addresses");
const server = http.createServer((req, res) => {
console.log(req.url);
let _currentReq;
if (_currentReq = _mainMap.get(req.url))
{
console.log(_currentReq[1]);
res.writeHeader(200, "Content-Type", _currentReq[1]);
fs.readFile(_currentReq[0], (err, data) => {
if (err) console.log("READ_FILE::ERROR");
res.write(data);
res.end();
});
} else
{
res.writeHeader(404, "Content-Type", "text/html");
fs.readFile(__dirname "/../404.html", (err, data) => {
if (err) console.log("READ_FILE::ERROR");
res.write(data);
res.end();
});
}
});
server.listen(8080, () => {
console.log("LISTENING_TO_PORT_8080");
});
//-----------------------------ANOTHER-MODULE----------------------------------------------
let _dir = __dirname;
let _mainMap = new Map();
module.exports = {
_mainMap: _mainMap
};
//easy to init arr
let _hashArr = [
["/", _dir "/../main.html", "text/html"],
["/JScripts/init.js", _dir "/../JScripts/init.js", "text/javascript"],
["/StylesCSS/main-style.css", _dir "/../StylesCSS/main-style.css", "text/css"]
];
//copy values from _hashArr to _mainMap
for (let i = 0; i < _hashArr.length; i )
{
_mainMap.set(_hashArr[i][0], [_hashArr[i][1], _hashArr[i][2]]);
}
init.js сам файл пустой