Node.js 找不到客户端文件
Node.js cannot find client-side files
我有一个简单的 node.js 应用程序:
server.js
const express = require('express');
const app = express();
const PORT = 8080;
app.use(express.static('client'));
// Start the express web server listening on 8080
app.listen(8080, () => {
console.log('Service started on port 8080.');
});
// Serve the homepage
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
index.html
<html>
... irrelevant junk ...
<script src="js/client.js"></script>
</html>
然而,当我运行node server.js
并打开localhost:8080
时,控制台抱怨找不到http://localhost:8080/javascript/client.js
。
显然,我希望它查看 ./javascript/client.js
,而不是根植于本地主机地址——如何解决?
文件夹层次结构简单:
.
├── index.html
├── server.js
├── js
└── client.js
我已尝试按照建议将 public
更改为 client
,但这没有帮助。
根据您的文件在服务器上的位置,您应该进行三处更改:
app.use(express.static("./public"));
并且,在客户端中,使用这个:
<script src="/js/client.js"></script>
然后,将您的客户端文件移动到服务器端文件下方的根 public 目录中,如下所示:
.
├── index.html
├── server.js
├── public
├── js
└── client.js
在不将客户端文件移动到 public
的情况下,您打开服务器端代码以供客户端读取(您不希望这样)。
工作原理如下:
客户要求:
http://localhost:8080/js/client.js
express.static()
看到一个请求:
/js/client.js
它从您的 public 文件的根目录开始,并将 /js/client.js
合并到 public 目录路径,然后创建正确的访问路径:
public/js/client.js
您可以在不将客户端文件移动到 public
目录层次结构的情况下使它工作,只需这样做:
app.use(express.static(__dirname));
但是,那会打开所有服务器端文件供客户端读取,而您确实不希望这样。
我有一个简单的 node.js 应用程序:
server.js
const express = require('express');
const app = express();
const PORT = 8080;
app.use(express.static('client'));
// Start the express web server listening on 8080
app.listen(8080, () => {
console.log('Service started on port 8080.');
});
// Serve the homepage
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
index.html
<html>
... irrelevant junk ...
<script src="js/client.js"></script>
</html>
然而,当我运行node server.js
并打开localhost:8080
时,控制台抱怨找不到http://localhost:8080/javascript/client.js
。
显然,我希望它查看 ./javascript/client.js
,而不是根植于本地主机地址——如何解决?
文件夹层次结构简单:
.
├── index.html
├── server.js
├── js
└── client.js
我已尝试按照建议将 public
更改为 client
根据您的文件在服务器上的位置,您应该进行三处更改:
app.use(express.static("./public"));
并且,在客户端中,使用这个:
<script src="/js/client.js"></script>
然后,将您的客户端文件移动到服务器端文件下方的根 public 目录中,如下所示:
.
├── index.html
├── server.js
├── public
├── js
└── client.js
在不将客户端文件移动到 public
的情况下,您打开服务器端代码以供客户端读取(您不希望这样)。
工作原理如下:
客户要求:
http://localhost:8080/js/client.js
express.static()
看到一个请求:
/js/client.js
它从您的 public 文件的根目录开始,并将 /js/client.js
合并到 public 目录路径,然后创建正确的访问路径:
public/js/client.js
您可以在不将客户端文件移动到 public
目录层次结构的情况下使它工作,只需这样做:
app.use(express.static(__dirname));
但是,那会打开所有服务器端文件供客户端读取,而您确实不希望这样。