Моя веб-страница создает новый элемент скрипта, а затем загружает скрипт с локального сервера. Проблема в том, что скрипт не может быть загружен и показывает PROTOCOL ERROR:
https://localhost:4200/script/test.js net::ERR_SSL_PROTOCOL_ERROR
index.html
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8" />
<link href = "./public/nps.style.css" rel = "stylesheet" />
<script>
j = document.getElementsByTagName('script')[0],
k = document.createElement('script');
k.src = 'http://localhost:4200/script/test.js';
j.parentNode.insertBefore(k,j);
</script>
</head>
<body>
<p>Testing</p>
</body>
</html>
Затем создайте локальный сервер для его прослушивания, чтобы можно было загрузить файл JavaScript.
index.js:
const express = require('express');
const cors = require('cors');
const { test } = require('./script/test.js');
const api = express();
api.use(cors({origin: '*'}));
api.use('/script', express.static('public'));
api.listen(4200, () => {
console.info("Server listening");
})
test.js:
alert("it works!");
Как я могу решить эту проблему?
Обновлять:
Изначально у меня был источник нового элемента скрипта как 'https://localhost:4200/script/test.js'
, поэтому я перешел на http, возникла новая ошибка:
GET http://localhost:4200/script/test.js net::ERR_ABORTED 404 (Not Found)
🤔 А знаете ли вы, что...
JavaScript обеспечивает обработку ошибок с использованием конструкции try...catch.
Вы не рассматривали возможность использования https? Похоже, это может быть ваша проблема, работающая локально. Ошибка протокола является поддавки.
Вы просто меняете 2 строки своего index.js
кода, чтобы решить эту проблему. Попробуйте с этим кодом:
const express = require('express');
const cors = require('cors');
// const { test } = require('./script/test.js');
const api = express();
api.use(cors({ origin: '*' }));
api.use(express.static('public'));
api.use('/script', express.static('script'));
api.listen(4200, () => {
console.info("Server listening");
});
И убедитесь, что ваше управление каталогами/файлами выглядит так: