javascript 本地服务器测试

mwecs4sa  于 5个月前  发布在  Java
关注(0)|答案(2)|浏览(53)

嘿伙计们,如果可能的话需要帮助-
我有一个网页和一个快速服务器。在我的笔记本电脑上使用触摸屏一切正常。问题是,当我运行一个实时服务器并通过我的手机访问网页时,服务器请求似乎不会发生。我已经将CORS源添加到我的设备IP并配置事件侦听器,以便它接收触摸事件。还有什么我遗漏的吗?

服务器:

const express = require('express');
const app = express();
const cors = require('cors');
const PORT = 4001;

app.use(cors({ origin: ['vscode IP and port', 'MY phones IP'] }));

app.get('/test', (req, res, next) => {
    res.send({ test: 'testing' });
});

app.listen(PORT, (req, res, next) => {
    console.log(`Runnning on port: ${PORT}`);
})

字符串

JS:

const h1 = document.querySelector('#testh1');
const p = document.querySelector('p');

h1.addEventListener('touchstart', async () => {
    const response = await fetch('http://localhost:4001/test');
    const jsonResponse = await response.json();
    p.innerHTML = jsonResponse.test
});


任何帮助都很感激,谢谢
这只是我在实际项目中实现之前的一个测试。
该网页有一个按钮,你点击,然后它显示从响应对象值.
在我的笔记本电脑上运行正常,但不能从我的手机上运行

mv1qrgav

mv1qrgav1#

我将详细说明@tevemadar所说的内容.当你在笔记本电脑上运行你的节点服务器时,localhost是运行该服务器的机器的本地主机。从这个意义上说,试图从你的手机上访问同一个localhost是不会发生的。
如果你想从另一个设备访问笔记本电脑本地主机,你可以使用像ngrok这样的工具。

6rvt4ljy

6rvt4ljy2#

这里的问题是与localhost. Localhost将只能从您的笔记本电脑,因为它是技术上的笔记本电脑内部网络访问.这也是真实的手机,所以引用localhost实际上从来没有达到设备外部.
您的手机无法连接到它。一个解决方案是使用ngrok:https://ngrok.com/将localhost隧道连接到公共互联网
安装ngrok,然后执行ngrok http http://localhost:<yourt-port>,这将给予你一个你可以使用的公共地址。注意,这是一个PUBLIC网址,所以一定不要暴露任何敏感数据。而且每次隧道重新启动时,地址都会改变。
更新方法#2(来自基思):
您还可以通过将手机上的URL更新为http://:/test来连接到笔记本电脑上运行的服务器(前提是它们位于同一网络上
请注意,如果您配置了任何类型的防火墙(特别是在windows上),它可能会阻止此连接。

相关问题