无法在 express 应用程序中从 URL 访问静态文件

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

我已经构建了一个基本的快递应用程序如下 -

index.js

const express = require("express");
const app = express();

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

app.get("/", (req, res) => {
  res.json({ message: "Hello World!" });
});

app.listen(3000, () => {
  console.log("Server is running on port 3000");
});

我想直接从浏览器 URL 提供静态文件,根据 this express doc page 这确实是可能的。

因此,我在根文件夹中创建了一个名为

public
的文件夹,并在其中保存了两个文件——一个
demo.html
,一个
image.jpg
。我的文件夹结构 -

express-app
  |- index.js
  |- public
    |- image.jpg
    |- demo.html

但是,当我尝试访问

http://localhost:3000/demo.html
http://localhost:3000/image.jpg
时,出现
Cannot GET
错误。

有人能告诉我为什么它不起作用吗?

html node.js express http static-files
1个回答
0
投票
app.use(express.static(__dirname + "public"));

__dirname
不包括尾部斜杠。

__dirname + "public"
会给你这样的东西:
/home/me/express-apppublic
— 一个不存在的目录。

您链接到的文档显示了使用

path.join
为您的操作系统包含正确的目录分隔符。

const path = require('path')
app.use('/static', express.static(path.join(__dirname, 'public')))

不要省略那部分!

© www.soinside.com 2019 - 2024. All rights reserved.