- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 esp8266 接入点上托管一个 HTML 文件。我可以正确显示 .html 文件。不幸的是,当访问 html 页面时,我的浏览器无法显示 javascript 内容。奇怪的是,当我在我的机器上本地工作时 - 它工作得很好。当我访问 esp8266 上的页面时,我收到错误
"Not found: dygraph.min.js."
很明显,浏览器没有找到javascript源。我想知道为什么。我尝试了几种命名和引用方式,但直到现在我并不幸运。
我使用 ESP8266 草图数据上传工具将文件上传到 SPIFFS。在 html 文件中,我将 js 引用为 <script type="text/javascript"
.
src="dygraph.min.js"></script>
有没有人遇到过这样的事情?整个代码可以在这里找到: https://github.com/JohnnyMoonlight/esp8266-AccessPoint-Logger-OfflineVisualisation
我期待着您的意见!
谢谢,最好!
最佳答案
通读您的代码,并想象将对您的网络服务器发出的请求。
您编写的代码是为了处理对两个 URL 的请求:/
和 /temp.csv
- 仅此而已。
当访问 /temp.csv
时,您将提供 index.html
的内容。当浏览器解释该文件时,它将尝试从您的 ESP 加载 /dygraph.min.js
。您没有该文件的处理程序。所以加载失败。
您需要为其添加一个处理程序,然后提供该文件。所以你需要添加一行:
server.on("/dygraph.min.js", handleJS);
并定义函数 void handleJS()
来执行 handleFile()
的操作。
您需要为 /dygraph.css
做同样的事情;你也没有它的处理程序。
我会这样做:
void handleHTML() {
handleFile("index.html");
}
void handleJS() {
handleFile("dygraph.min.js");
}
void handleCSS() {
handleFile("dygraph.css");
}
void handleFile(char *filename) {
File f = SPIFFS.open(filename, "r");
// the rest of your handleFile() code here
}
在你的setup()
中:
server.on("/", handleRoot);
server.on("/temp.csv", handleHTML);
server.on("/dygraph.css", handleCSS);
server.on("/dygraph.min.js", handleJS);
分别:
您的文件映射的 URL 搞砸了。我上面分享的代码与你现在拥有的是一致的,但通常你会希望 /
为 index.html
提供服务;你让它提供一段 HTML。
通常 /temp.csv
会提供逗号分隔值文件。我看到你有一个,在 repo 协议(protocol)中,你有向它添加数据的代码;你只是不服务它。现在你有服务 index.html
。一旦开始成功加载 Javascript,就会遇到问题。
您需要解决这些问题才能正常工作。
此外,在 loop()
中,您应该将 server.handleClient();
移动到循环中的第一件事。按照您编写的方式,您只是检查是否有网络请求是否需要再读取一次温度读数。您应该始终检查是否有 Web 请求,否则您会不必要地减慢 Web 服务。
最后一件事,与网络服务器代码完全分开,在您让其余代码正常工作之前我不会担心这个:您的代码大约每 5 秒写入一次 SPIFFS . SPIFFS 存储在 ESP8266 的闪存中。 ESP8266 板使用不会持续很长时间的廉价闪存 - 它在大约 10,000 到 100,000 次写入周期后就会磨损(这有点复杂;它被分成“页面”并且页面中的各个单元会磨损,但你必须同时写入整个页面)。
很难确定它的生命周期是多少;这取决于所涉及的特定 ESP8266 板和闪存芯片。 10,000 次写入周期意味着电路板上的闪存可能会在 50,000 秒后开始出现故障 - 100,0000 次写入周期会给你大约 500,000 次写入 - 如果你继续写入同一个位置。这取决于闪存中同一位置被写入的频率。如果这对您来说是个问题,您可能希望增加写入之间的延迟或对数据执行其他操作。
您可能不会遇到这种情况,因为您正在附加到一个文件 - 您仍然会多次重写相同的闪存 block ,但不会重写 10,000 次 - 除非您经常删除 CSV 文件并重新开始。因此,从长远来看,这对您来说可能是个问题,也可能不是。
您可以在 https://design.goeszen.com/mitigating-flash-wear-on-the-esp8266-or-any-other-microcontroller-with-flash.html 阅读有关这些问题的更多信息
祝你好运!
关于javascript - ESP8266 服务于 HTML+js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51580059/
我试图在文档中找到它,但找不到,我如何从 MacHg 运行 Mercurial 服务器(如终端中的 hg 服务),这可能吗?如果重要的话,我在 Mac 10.6 上。 谢谢。 最佳答案 根据 MacH
我有几个网站要使用相同的 Varnish 实例进行缓存。 我确实使用以下方法设置了后端: if (req.http.host == "time.ikub.al") { # Process th
我尝试在 esp8266 接入点上托管一个 HTML 文件。我可以正确显示 .html 文件。不幸的是,当访问 html 页面时,我的浏览器无法显示 javascript 内容。奇怪的是,当我在我的机
我们正在使用 Apache Camel 2.13.2 创建一个应用程序,用于路由来自不同协议(protocol)的消息。这将是一个服务组件,我们还想嵌入一个简单的 web ui 来监控消息并查看配置。
我有一个由 Django Rest API 提供 Angular 前端的项目。我的项目结构如下。 example.com |- client (holds angular files) |-
我正在尝试将 TensorFlow 模型部署到 Google AI Platform 以进行在线预测。我遇到了延迟和吞吐量问题。 对于单个图像,该模型在我的机器上运行不到 1 秒(仅使用 Intel
将 ASP.NET 网络表单应用程序部署到 IIS 6.0 64 位服务器。一些相关的 DLL 仅在 32 位中可用,所以我在 these 之后启用了 32 位应用程序。指示。起初我无法查看 ASPX
我玩 Java 和 mysql 有一段时间了。但我第一次将它与 Tomcat 一起使用。命令是否相同,因为据我所知,它的命令不起作用。 到目前为止,我已经连接上了,我知道这是因为它用完了我的 mysq
Google 是否也托管这些字体格式?在网站上,我看到它指的是 woff。这是否意味着所有其他格式都必须从本地机器提供? 我想要这样的东西: @font-face { font-family: '
好吧,我一直在尝试使用 nodejs、expressjs 和 socket.io 来创建一些应用程序。但现在我到了我想更进一步的阶段。 我注意到一些 Node 应用程序在其客户端使用 PHP 进行 T
我正在尝试自行托管服务的单例实例,但显然我在间接级别上迷路了... 我有一个基地址 http://localhost:8050/。我不太在意服务端点在哪里,只要它是可预测的。目前,我正在尝试使用 /M
在设计一个应该返回相同数据的不同表示(例如 JSON、XML)的 Web 服务时,您认为什么是最好的方法。 要求是将业务逻辑与编写实际 XML/JSON 响应的部分完全分离,具体取决于 HTTP 请求
我开发了三个基于 Spring 的 Web 应用程序,并部署在我的 Tomcat 8 服务器上。我可以通过以下方式在局域网中访问它们: http://localhost:8080/webapps1 h
https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally建议 three.js 示例由本地服务器提供。 python Simp
我正在 Flask 服务器中使用 Dash 应用程序。 这就是我实例化 Flask 服务器的方式: from flask import Flask, redirect server = Flask(_
我正在使用 TensorFlow 构建一个 CNN 文本分类器,我想在 tensorflow-serving 中加载它并使用服务 api 进行查询。当我在 grcp stub 上调用 Predict(
我在本地但远程服务器上为许多终端提供 MYSQL 服务,这些终端设置为通过 JDBC 连接 Libre Base 前端 服务器是一个运行良好的 Ubuntu 14.04 星号盒,我最近才添加数据库来为
Ruby On Rails 框架包含一些功能,可让您轻松构建公开网络服务 API 的服务器应用程序。例如, Controller 执行以下操作: respond_to :html, :json, :x
我是一名优秀的程序员,十分优秀!