Nodejs express中static的目录设置

Nodejs express中static的目录设置

目前我的express应用只能挂载在我的 domain.com/express下面。但是设置static,要在domain.com/下面才能访问得到静态资源。 如果我想要这样才能访问静态资源 domain.com/express/photo.png应该怎样弄?


10 回复

Node.js Express 中 Static 目录设置

在 Node.js 应用中使用 Express 框架时,我们经常需要为应用提供静态文件服务,比如 CSS、JavaScript 和图片等。默认情况下,Express 提供了一个 express.static 中间件来处理这些静态文件的请求。

问题描述

你希望将 Express 应用部署在 http://domain.com/express 路径下,并且能够正确地访问位于 /express 下的静态资源(如图片)。然而,当前设置只允许你在根路径(http://domain.com/)下访问静态资源。

解决方案

你可以通过配置 express.static 中间件来实现这一点。你需要告诉 Express 静态文件的实际位置以及它们对应的 URL 路径。

示例代码

假设你的项目结构如下:

my-app/
├── public/
│   ├── css/
│   ├── js/
│   └── images/
├── app.js
└── package.json

其中,public 目录包含所有静态资源文件。

在你的 app.js 文件中,可以这样设置:

const express = require('express');
const path = require('path');

const app = express();

// 设置静态文件目录
app.use('/express', express.static(path.join(__dirname, 'public')));

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

在这个例子中,app.use('/express', express.static(path.join(__dirname, 'public'))); 这一行代码告诉 Express 将 public 目录中的文件作为静态文件提供,并且这些文件可以通过 /express 路径访问。

例如,如果你想访问 public/images/photo.png,你应该通过 http://domain.com/express/images/photo.png 来访问它。

总结

通过调整 express.static 的第一个参数(即静态文件的 URL 路径),你可以灵活地控制静态资源的访问路径。这使得你可以将 Express 应用部署在任何子路径下,并且仍然能够正确地访问静态资源。


看了两遍搞不清楚你要表达什么

同不明白。

静态资源在开发时,通常用 express.static(path)

将静态文件目录设置在domain.com下 不要设在在 domain.com/express下就好了

express.static(‘你想要的前缀例如 /express’, ‘静态文件路径’);

正解,static带参数的,我不懂express,帮同事部署到服务器上,后面查了一下API才知道,static又两个参数。

static方法在哪里定义的?在express包中没有找到static方法,不解。

app.use(express.static(__dirname+’/…/static’))

要解决这个问题,你需要配置Express的express.static中间件来指定静态文件的路径。你需要让静态文件在特定的路径下(如/express)也能被正确访问到。

以下是一个简单的示例代码:

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

// 设置静态文件目录为 'public' 并且挂载在 '/express' 路径下
app.use('/express', express.static('public'));

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

在这个例子中,假设你的静态文件存放在项目根目录下的public文件夹中。当你访问http://domain.com/express/photo.png时,Express会从public文件夹中查找并返回photo.png

解释:

  • app.use('/express', express.static('public')); 这行代码将public文件夹中的静态文件挂载到了/express路径下。这意味着所有位于/express路径下的请求都会尝试从public文件夹中查找对应的静态文件。
  • public 文件夹应包含所有需要公开访问的静态文件,如图片、CSS文件等。

通过这种方式,你可以确保在/express路径下也能正确地访问到静态文件。

回到顶部