• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Подключение JavaScript через SPIFFS

RtroN

New member
Мне нужно подключить файл JavaScript через SPIFFS. Я уже пробовал это сделать, но ничего не получилось. Подключаю все файлы через server.streamFile, и html отлично работает, а вот другой файл с js, нет. Подскажите пожалуйста как это исправить?(Желательно на примере моего кода). Так же скажите пожалуйста почему в Inspect/Network/All всё вроде бы есть, а на самом деле нет?



Код esp:

#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <FS.h>


const byte DNS_PORT = 53;
IPAddress apIP(172, 0, 0, 1);
DNSServer dnsServer;
ESP8266WebServer server(80);

void handleSend() {
Serial.println("Input");
if (server.arg("input")!= ""){
Serial.println("Input is: " + server.arg("input"));
}
}

void setup()
{
SPIFFS.begin();
Serial.begin(115200);
Serial.println("Started");
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP("INFO");

dnsServer.start(DNS_PORT, "*", apIP);
server.onNotFound([]()
{
File file = SPIFFS.open("/index.html","r");
server.streamFile(file, "text/html");
file.close();
File filejs = SPIFFS.open("/script.js","r");
server.streamFile(filejs, "application/javascript");
filejs.close();
});
server.on ("/send", handleSend);
server.begin();
}

void loop()
{
server.handleClient();
dnsServer.processNextRequest();
}


Код html:

<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
<body>
<p>TEXT</p>
<script src="script.js"></script>
</body>
</html>

Код js:

document.write("SCRIPT TEST")
 

Yeti

New member
Вопрос, а зачем вам подключать файл из внутренней памяти?
Можно прописать код в теге
Я так понял это сайт при подключении к ESP, так пропишите сразу, ну или в Flash память.
Кстати в плане поднятия http сервера лучше подойдет Espruino
 

enjoynering

Well-known member
Зачем вы даёте вредные советы - Espruino работает медленнее чем arduino esp8266.

Автор, посмотрите стандартный пример FSBrowser, там все есть. Загрузка файлов идет из функции handleFileRead
 

Yeti

New member
Согласен, работает чуть медленнее и греет МК больше, но удобнее и проще поднять там. Ну и первоначально совет был в том, чтобы прописать js код в тег
 
Сверху Снизу