【问题标题】:Read static files with express got "Cannot Get /"用 express 读取静态文件得到“Cannot Get /”
【发布时间】:2022-02-13 18:46:03
【问题描述】:

我尝试从可靠的网站学习如何使用 express 读取静态文件。然后我发现不知道为什么,我的终端告诉我我成功了,但网站告诉我"Cannot Get /"(如下图所示)。我找到了很多解决方案(例如,在我的 html 文件中,我将脚本 src 添加到 socket.io)但仍然失败。我可以从哪里开始处理它?请帮帮我...

terminal show success

website show error

以下是我的代码:

C:\...\1-on-1-webrtc\server.js

const express = require('express')
const app = express()
const http = require('http').createServer(app)

// static data
app.use('/', express.static(__dirname + '/public/'))

// TODO: Signaling

//start server listen 8080 port
http.listen(8080, () => {
    console.log(`Server running in 8080`)
})

C:\...\1-on-1-webrtc\pubilc\index.html

(原点)

"hello"

(之后)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>111</title>
    <script src="https://cdn.socket.io/socket.io-3.0.5.js"></script>
</head>
<body>
<h1>"hello"</h1>
<script>
    var socket = io();
</script>
</body>
</html>

【问题讨论】:

  • 错字。目录名pubilc和你传递给static'/public/'的目录名需要匹配。
  • 是不是应该把(__dirname + '/public/'))改成(__dirname + '/public/index.html')),还是我理解错了?
  • 您应该将(__dirname + '/public/')) 更改为(__dirname + '/pubilc/')),因为您所说的目录就是这样命名的。 (或重命名目录,使整体拼写更好)
  • @Sojona108 您的公共文件夹名称中有错字! ;-) 将“public”的名称更改为“public”
  • @Quentin:天哪!!!谢谢,有效!!!都是我的错,我什至没有注意到我拼错了!实际上,我在寻找为什么它大约 3 天不起作用...我做了什么?

标签: html node.js express socket.io


【解决方案1】:

我稍微更改了您的代码,这是我的解决方案:

首先将public文件夹的名称更改为更正。不是“公开”,只有“公开”。

文件夹和文件结构:

server.js

const express = require("express");
const app = express();
const port = 8080;
// const http = require("http").createServer(app);

// static data
app.use("/", express.static(__dirname + "/public"));

//start server listen 8080 port
app.listen(port, () => {
  console.log(`Server is  listening at http://localhost:${port}`);
});

index.html(无任何更改):

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>111</title>
    <script src="https://cdn.socket.io/socket.io-3.0.5.js"></script>
  </head>
  <body>
    <h1>"hello"</h1>
    <script>
      var socket = io();
    </script>
  </body>
</html>

输出

测试:express 4.17.2 node 16.13.0 Linux Ubuntu 20.04 and Win10

【讨论】:

  • 我尝试了你的方法,但仍然得到“Cannot GET /”和“Cannot GET /index.html”。在 Windows 上使用 express 4.16.1 节点 16.13.2。 (我的文件夹和文件结构和你的一样。)它可能只适用于ubuntu吗?因为我要找的网站也是ubuntu处理的。还是与操作系统无关...?
  • @Sojona108 它也适用于 Windows!现在我在检查。只需复制我的代码 install express 并在 node server.js 项目文件夹中运行,然后在控制台中单击 localhost:8080 链接并完成。没有办法不工作... ;-) 慢慢来,不要紧张...
  • 这读起来更像是一个找不同的游戏,而不是一个答案。您应该解释您所做的更改以及为什么它应该可以解决问题。看着它,您似乎根本没有做任何事情来使 HTML 文档加载。
  • @Quentin 感谢您的宝贵建议。我为我的错误道歉 ;-)
  • @MarioG8:它仍然无法工作。也许我错过了一些我不知道的东西。也许我应该冷静下来,用一个新的折叠重试它。谢谢你的回答,如果成功我会回复你的~
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2016-08-28
  • 1970-01-01
相关资源
最近更新 更多