尝试提供静态 JS 文件 Node.js,错误 404

Posted

技术标签:

【中文标题】尝试提供静态 JS 文件 Node.js,错误 404【英文标题】:Trying to serve static JS files Node.js, Err 404 【发布时间】:2021-10-03 12:18:17 【问题描述】:

我正在尝试设置一个简单的 node.js 服务器来完成一些基本的 Socket.io 工作,但是当我尝试提供我的静态 JS 文件时,我收到了这个错误:

GET https://somewebsitewithfiles.websitenet::ERR_ABORTED 404

这是我的服务器和本地代码:

服务器:

var express = require('express');  
var app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const port = process.env.PORT || 3000;


app.get('/', (req, res) => 
  res.sendFile(__dirname + '/html/index.html');
);
app.use(express.static('Static'))

http.listen(port, () => 
  console.log(`Socket.IO server running at http://localhost:$port/`);
)

本地:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script src="/Static/User.js"></script>
  
</body>
</html>

如您所见,我使用了 express static file 命令,女巫似乎不起作用。我的文件系统由我的项目文件夹组成,里面是我的服务器 JS 文件。那里还有一个名为“Static”的文件夹,其中包含我的静态文件和一个名为 HTML 的文件夹,其中包含我的 index.html

任何帮助表示赞赏。谢谢

【问题讨论】:

【参考方案1】:

app.use(express.static('静态')) 试着把这条线放在你的'/'路线上方

代码:

var express = require('express');  
var app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const port = process.env.PORT || 3000;

app.use(express.static('Static'))
app.get('/', (req, res) => 
  res.sendFile(__dirname + '/HTML/index.html');
);


http.listen(port, () => 
  console.log(`Socket.IO server running at http://localhost:$port/`);
)

编辑:

<script src="/Static/User.js"></script>

您不必在 src 路径中提及“静态”。

正确方法:

<script src="/User.js"></script>

【讨论】:

在我的路线上方加上斜线是什么意思?请详细说明 把这个 app.use(express.static('Static')) 放到 app.get('/',...) 上面 我明白了,会试试 新错误:加载资源失败:服务器响应js文件状态为404()。 您不必在 SRC 中指定“静态”

以上是关于尝试提供静态 JS 文件 Node.js,错误 404的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 node.js 中使用 sendFile() 方法为两个路由提供静态文件时会出错

Node.js 公共静态文件夹,用于为 js 提供 utf-8 字符集

使用 restify (node.js) 提供静态文件

尝试通过 express node.js 提供 ejs 文件时出错

如何在本地通过 Node.js 提供静态文件?

Nginx 反向代理 Serving Node.js app 静态文件