• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 код в тег
 
Сверху Снизу