You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Bun build --compile嵌入JSON资源后embeddedFiles无显示的疑问

Bun中导入JSON文件时Bun.embeddedFiles为空是否是预期行为?

这确实是预期行为,核心原因是Bun对不同类型的资源导入采用了完全不同的处理逻辑:

  • 默认导入JSON(或显式指定type: "json")时,Bun会在构建编译阶段直接把JSON内容解析成JavaScript对象,将这个对象的代码逻辑直接嵌入到可执行文件里。这种情况下,JSON内容是作为代码的一部分存在的,不属于"独立嵌入文件"范畴,自然不会出现在Bun.embeddedFiles数组中,但依然能正常访问解析后的对象,移动可执行文件也不影响使用。
  • 当指定type: "file"导入时,Bun会把整个JSON文件以Blob的形式完整嵌入到可执行文件中,这类资源会被Bun.embeddedFiles追踪,同时返回的是文件的虚拟访问路径。此时需要你自行读取Blob内容并解析成JSON对象。

如果想要让JSON文件既出现在Bun.embeddedFiles中,又能得到解析后的JSON对象,可以这样处理:

import Bun from "bun";
import testPath from "./test.json" with { type: "file" };

// 从embeddedFiles中找到对应的Blob并解析
const testBlob = Bun.embeddedFiles.find(blob => blob.name.includes("test.json"));
const test = testBlob ? await testBlob.json() : null;

console.log(Bun.embeddedFiles);
console.log(test);

执行这段代码编译后的可执行文件,就能同时看到Bun.embeddedFiles中的Blob对象,以及解析后的{ foo: "bar" }结果。

内容的提问来源于stack exchange,提问作者Filip Seman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:33:13