我已经构建了一个基本的快递应用程序如下 -
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
错误。
有人能告诉我为什么它不起作用吗?
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')))
不要省略那部分!