【发布时间】:2020-08-09 23:57:51
【问题描述】:
我设法使用 nodejs 发布了我的应用程序,并且我能够从我的网络中的设备访问它(请注意,它只是一个本地应用程序)。这是一个用于控制连接到我的网络的其他硬件的应用程序。
我现在遇到的问题是,当我从托管它的本地 PC 从 127.0.0.1:8081 打开它时,应用程序运行正常,但是如果我尝试从另一台设备(或甚至来自主机PC本身)通过使用主机PC的IP 192.168.zz:8081,javascript文件不起作用,这就是我的意思。
我有一个 config.js 文件,其中包含我的应用运行所需的配置数据,例如我正在控制的设备的 IP。
var config = {
URL: '192.168.0.2',
}
然后我有一个包含 SetData 和 GetData 的 Model.js 文件,它们都依赖于 config.URL 来执行它们的 AJAX 请求,但是 config.URL 保持为空,它的硬编码仍然是空的!
当我运行应用程序并在控制台中执行 config.URL 时,我得到 null,即使我在控制台中手动设置它 config.URL = '192.168.0.2',然后尝试调用 Model.SetData.. ...或Model.GetData...他们仍然没有看到它,他们仍在尝试向http://null/发送请求......
这是我的节点代码:
const express = require("express");
const app = express();
const port = 8081
app.use(express.static('public'))
app.use('/css', express.static(__dirname + '/public/css'));
app.use('/js', express.static(__dirname + '/public/js'));
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));
我尝试过使用和不使用 app.use(/css 和 /js 代码行,没有变化
这是我的 JS 是如何添加到我的 html 中的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Robot Stuff</title>
<script type="text/javascript" src="./js/jquery-3.5.0.js"></script>
<script type="text/javascript" src="./assets/scripts/main.js"></script>
<script type="text/javascript" src="./js/easy-numpad.js"></script>
<script type="text/javascript" src="./js/jquery-modal.js"></script>
<script type="text/javascript" src="./js/Model.js"></script>
<script type="text/javascript" src="./js/UI.js"></script>
<script type="text/javascript" src="./js/config.js"></script>
<link href="./css/main.css" rel="stylesheet" type="text/css" >
<link href="./css/easy-numpad.css" rel="stylesheet" type="text/css" >
同样,如果我从http://127.0.0.1:8081 打开该应用程序,或者直接双击我的 index.html 文件,一切正常,但是当我使用 PC 的实际 IP 访问它时远程,然后它就坏了。
我不想让它过于复杂,我只是想明确地使用节点来使应用程序在我的网络上可用,仅此而已。
【问题讨论】:
-
“然后它就坏了。”什么破?尝试通过另一台计算机上的浏览器访问应用程序时遇到什么错误?
-
不太清楚你如何以及在哪里使用你的 config.js 以及你在哪里使用 console.log(config.URL)
-
@D.Pardal 我已经解释了我所说的“中断”是什么意思,javascript 文件无法相互获取数据,请参阅我给出的关于我的配置和模型 js 文件如何工作的解释。
-
@TheeSritabtim 我没有做 console.log(config.URL),我在打开应用程序后直接在 Chrome 浏览器控制台中执行此操作,config.URL 以检查其当前值,即null,但它实际上是硬编码在文件中的,但它返回一个 null!所以我手动设置它(使用chrome控制台)config.URL ='ipofdevice'然后我有另一个函数startUpdating()调用model.GetData,当我执行我的请求时,在model.GetData中,url是'http ://' + config.URL + '/therestoftheurl'
-
供将来参考:devtools 的 Network 选项卡对于解决此类问题非常有帮助。
标签: javascript node.js