在Bun环境下使用ElysiaJS提供静态文件夹服务报错求解决
解决ElysiaJS静态文件夹服务问题
你遇到的Directories can't be read like files错误,是因为Bun.file("public")试图读取目录而非单个文件——Bun.file仅支持读取具体文件,不能直接处理目录。
实际上@elysiajs/static插件本身就实现了类似Express中express.static()的静态文件服务能力,不需要额外通过get("/")手动返回目录。正确的实现代码如下:
import { Elysia } from 'elysia'; import { staticPlugin } from '@elysiajs/static'; const app = new Elysia() // 配置静态文件服务,指定public为静态资源目录 .use(staticPlugin({ assets: 'public', // 访问根路径时自动加载目录下的index.html(可选,符合常规静态服务行为) index: 'index.html' })) .listen(3000); console.log( `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}` );
关键配置说明
assets: 'public':指定静态资源所在的本地目录,对应express.static('public')的核心功能index: 'index.html':当访问根路径/或某个子目录时,自动返回该目录下的index.html文件,和Express的默认行为一致- 如果需要给静态资源设置访问前缀(比如通过
/static/*访问),可以添加prefix: '/static'配置项
注意事项
确保项目根目录下存在public文件夹,并且里面有可访问的文件(比如index.html),启动服务后即可通过http://localhost:3000直接访问静态资源。
内容的提问来源于stack exchange,提问作者ModestCookie
相关产品推荐
相关产品推荐

