我们如何提供位于目录 (/) 根目录而不是其文件夹中的静态文件? 我将 Node.js 与 Express.js 一起使用,我在位于
index.js
(目录的根目录)的 /
文件中尝试了以下 JavaScript 代码。
尝试1
const path = require('path');
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
})
尝试2
const path = require('path');
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '/'));
})
与尝试 1 相同的输出
尝试3
app.use(express.static('/'));
尝试4
app.use(express.static(''));
请帮忙,我参考了许多其他可能与此类似的问题,并且其中一个问题没有答案,所以我重新提问。
您传递给
express.static
的参数需要是文件所在目录的路径。
它不应该是
/
,它是整个文件系统的根(您可能希望它是URL路径/
而不是文件系统路径/
,但这不是它的意思).
__dirname
将为您提供当前正在运行的JS文件所在的目录。您可能需要它(假设像这样的目录结构):
.../
|-server.js
|-index.html
所以
app.use(express.static(__dirname));
请注意,通常最好将服务器端代码和发送到客户端的文件分开。从长远来看,它使得维护项目变得更加容易,并且防止您的服务器端代码(可能包含秘密)通过 HTTP 被
static
模块公开。
import path from 'path';
const __dirname = path.resolve(); // This will give you the root path
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html')); // Serve the index.html file
});
在脚本中使用 / 和不使用 / 没有任何区别
供快速使用
app.use(express.static(process.cwd() + '/'));
试试这个可能会有帮助
app.use(express.static('/'));
“js”之前不需要“/”,因为它已经包含在上面了:
<script src="test.js"></script>