Node.js + Express.js:如何使用根(/)来提供静态文件?

问题描述 投票:0回答:4

我们如何提供位于目录 (/) 根目录而不是其文件夹中的静态文件? 我将 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(''));
  • 不起作用,显示错误:“路径不能为空”。

请帮忙,我参考了许多其他可能与此类似的问题,并且其中一个问题没有答案,所以我重新提问。

node.js express
4个回答
1
投票

您传递给

express.static
的参数需要是文件所在目录的路径。

它不应该是

/
,它是整个文件系统的根(您可能希望它是URL路径
/
而不是文件系统路径
/
,但这不是它的意思).

特殊变量

__dirname
将为您提供当前正在运行的JS文件所在的目录。您可能需要它(假设像这样的目录结构):

.../
   |-server.js
   |-index.html

所以

app.use(express.static(__dirname));

请注意,通常最好将服务器端代码和发送到客户端的文件分开。从长远来看,它使得维护项目变得更加容易,并且防止您的服务器端代码(可能包含秘密)通过 HTTP

static
模块公开。


0
投票

使用 Node.js 中的 Path 模块提供 HTML 文件的步骤

第1步:导入路径模块

import path from 'path';

第2步:定义根路径

const __dirname = path.resolve(); // This will give you the root path

第 3 步:设置路线

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html')); // Serve the index.html file
});

-2
投票

在脚本中使用 / 和不使用 / 没有任何区别

供快速使用

app.use(express.static(process.cwd() + '/'));


-2
投票

试试这个可能会有帮助

app.use(express.static('/'));

“js”之前不需要“/”,因为它已经包含在上面了:

<script src="test.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.