我正在尝试从Express服务器上提供静态资产,该服务器也恰好安装了Apollo Server,但这是与express.static
配置有关的问题。
这是我的文件夹结构的屏幕截图
这是快速配置的代码。它位于/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
我在做什么错了?
答案 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'>
我希望这会有所帮助。