表达静态文件服务配置

时间:2018-12-09 18:25:22

标签: node.js express

我正在尝试从Express服务器上提供静态资产,该服务器也恰好安装了Apollo Server,但这是与express.static配置有关的问题。 这是我的文件夹结构的屏幕截图enter image description here

这是快速配置的代码。它位于/config/app.js

import express from 'express';
import bodyParser from 'body-parser';
import morgan from 'morgan';
import cookieParser from 'cookie-parser';
import cors from 'cors';
import path from 'path';

const PORT = process.env.PORT || 3001;
const environment = process.env.NODE_ENV || 'development';
const loggingType = environment === 'development' ? 'dev' : 'tiny';

const app = express();
app.use(
  bodyParser.json({ limit: 1024 * 1024 * 2000, type: 'application/json' })
);
app.use(morgan(loggingType));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, './assets/images')));

export default app;

如果我尝试访问localhost:3001 / images,它说Cannot get /images

我在做什么错了?

3 个答案:

答案 0 :(得分:3)

请尝试以下操作:

app.use(‘/assets’, express.static(path.join(__dirname, '..', ‘assets’)));

根据目录结构将参数更改为path.join

答案 1 :(得分:0)

__ dirname表示当前模块的目录名称。您应该使用“ ../assets/images”作为图像的静态路径。

尝试访问localhost:3001 / images会返回错误,因为它是静态目录,而不是文件。访问localhost:3001 / images / test.png应该可以。

但是首先,您需要定义您的静态目录。代替:

app.use(express.static(path.join(__dirname, './assets/images')));

做:

app.use('/images', express.static(path.join(__dirname, '..', '/assets/images');

希望这会有所帮助!

编辑:将__dirname目标目录更改为正确的目录。

答案 2 :(得分:0)

您可以通过其他方式使用static函数:

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

...并按照以下示例调用图片:

<img src='/images/logo.png'>

我希望这会有所帮助。