如何使用 Koa 提供静态文件?

Gin*_*ina 3 mount node.js koa server serve

我想在我的项目中实现通用链接,并且需要通过 Koa 提供 json,这是一个名为apple-app-site-association的静态文件。

我的文件位于/assets/apple-app-site-association/apple-app-site-association文件夹中。

我担心的是我无法访问此 https://myprojectlink/apple-app-site-association。

我此刻拥有的:

const path = require("path");
const Koa = require("koa");
const mount = require("koa-mount");
const serve = require("koa-better-serve");

app.use(mount("/apple-app-site-association", serve(path.resolve(__dirname,"../../../assets/apple-app-site-association/apple-app-site-association"))));
Run Code Online (Sandbox Code Playgroud)

我找不到,似乎我无法以正确的方式提供服务。

我能做些什么?

预先非常感谢您。

小智 11

koa -static模块就是您正在寻找的。您可以使用它来将单个文件或整个目录提供给给定路径。以下是一些应该有所帮助的示例:

提供文件服务koa-static

要提供文件服务,只需将koa-static中间件传递到 koa 的中间件堆栈即可app.use()

服务整个目录

这里我们提供整个/static目录

const Koa = require('koa')
const serve = require('koa-static')
const path = require('path')

const app = new Koa()
app.use(serve(path.join(__dirname, '/static')))

app.listen(3000)
Run Code Online (Sandbox Code Playgroud)

提供单个文件

这里我们提供单个文件,例如目录data.json内的文件/static

const Koa = require('koa')
const serve = require('koa-static')
const path = require('path')

const app = new Koa()
app.use(serve(path.join(__dirname, '/static/data.json')))

app.listen(3000)
Run Code Online (Sandbox Code Playgroud)

在给定路径上提供目录或文件

使用koa-mountkoa-static挂载到给定路径。例如,这里我们将/static要服务的整个目录挂载到/public路径上

const Koa = require('koa')
const serve = require('koa-static')
const mount = require('koa-mount')
const path = require('path')

const app = new Koa()
app.use(mount('/public ',serve(path.join(__dirname, '/static'))))

app.listen(3000)
Run Code Online (Sandbox Code Playgroud)