处理bolt.diy 安装过程遇到的Error: write EPIPE

bolt.new 试用了一下,生成的vue3项目的工程能力还可以接受,但就是有使用限额。于是打算自己部署bolt.diy这个开源版本搭配DEEPSEEK来使用。

按文档操作,
https://stackblitz-labs.github.io/bolt.diy/
 

但在  pnpm run dev 这一步遇到问题了:

Error: write EPIPE
    at __node_internal_captureLargerStackTrace (node:internal/errors:563:5)
    at __node_internal_errnoException (node:internal/errors:690:12)
    at afterWriteDispatched (node:internal/stream_base_commons:160:15)
    at writeGeneric (node:internal/stream_base_commons:151:3)
    at Socket._writeGeneric (node:net:952:11)
    at Socket._write (node:net:964:8)
    at writeOrBuffer (node:internal/streams/writable:556:12)
    at _write (node:internal/streams/writable:490:10)
    at Socket.Writable.write (node:internal/streams/writable:494:10)
    at Runtime.updateConfig (/mnt/vm/project/bolt.diy/node_modules/.pnpm/miniflare@3.20250214.2/node_modules/miniflare/src/runtime/index.ts:154:24)
    at Miniflare2.#assembleAndUpdateConfig (/mnt/vm/project/bolt.diy/node_modules/.pnpm/miniflare@3.20250214.2/node_modules/miniflare/src/index.ts:1408:28)
    at Mutex.runWith (/mnt/vm/project/bolt.diy/node_modules/.pnpm/miniflare@3.20250214.2/node_modules/miniflare/src/workers/shared/sync.ts:66:45)
    at Miniflare2.#waitForReady (/mnt/vm/project/bolt.diy/node_modules/.pnpm/miniflare@3.20250214.2/node_modules/miniflare/src/index.ts:1496:3)
    at Miniflare2._getProxyClient (/mnt/vm/project/bolt.diy/node_modules/.pnpm/miniflare@3.20250214.2/node_modules/miniflare/src/index.ts:1702:3)
    at Miniflare2.getBindings (/mnt/vm/project/bolt.diy/node_modules/.pnpm/miniflare@3.20250214.2/node_modules/miniflare/src/index.ts:1725:23)
    at getPlatformProxy (/mnt/vm/project/bolt.diy/node_modules/.pnpm/wrangler@3.112.0_@cloudflare+workers-types@4.20250303.0/node_modules/wrangler/wrangler-dist/cli.js:157855:20)
    at configureServer (/mnt/vm/project/bolt.diy/node_modules/.pnpm/@remix-run+dev@2.16.0_@remix-run+react@2.16.0_sass-embedded@1.85.1_typescript@5.8.2_vite@5.4.14_wrangler@3.112.0/node_modules/@remix-run/dev/dist/vite/cloudflare-proxy-plugin.js:55:11)
    at _createServer (file:///mnt/vm/project/bolt.diy/node_modules/.pnpm/vite@5.4.14_sass-embedded@1.85.1/node_modules/vite/dist/node/chunks/dep-CHZK6zbr.js:63230:20)
    at configResolved (/mnt/vm/project/bolt.diy/node_modules/.pnpm/@remix-run+dev@2.16.0_@remix-run+react@2.16.0_sass-embedded@1.85.1_typescript@5.8.2_vite@5.4.14_wrangler@3.112.0/node_modules/@remix-run/dev/dist/vite/plugin.js:770:27)
    at async Promise.all (index 3)
    at resolveConfig (file:///mnt/vm/project/bolt.diy/node_modules/.pnpm/vite@5.4.14_sass-embedded@1.85.1/node_modules/vite/dist/node/chunks/dep-CHZK6zbr.js:66579:3)
    at _createServer (file:///mnt/vm/project/bolt.diy/node_modules/.pnpm/vite@5.4.14_sass-embedded@1.85.1/node_modules/vite/dist/node/chunks/dep-CHZK6zbr.js:62908:18)
    at dev (/mnt/vm/project/bolt.diy/node_modules/.pnpm/@remix-run+dev@2.16.0_@remix-run+react@2.16.0_sass-embedded@1.85.1_typescript@5.8.2_vite@5.4.14_wrangler@3.112.0/node_modules/@remix-run/dev/dist/vite/dev.js:39:16)
    at Object.viteDev (/mnt/vm/project/bolt.diy/node_modules/.pnpm/@remix-run+dev@2.16.0_@remix-run+react@2.16.0_sass-embedded@1.85.1_typescript@5.8.2_vite@5.4.14_wrangler@3.112.0/node_modules/@remix-run/dev/dist/cli/commands.js:221:3)
    at Object.run (/mnt/vm/project/bolt.diy/node_modules/.pnpm/@remix-run+dev@2.16.0_@remix-run+react@2.16.0_sass-embedded@1.85.1_typescript@5.8.2_vite@5.4.14_wrangler@3.112.0/node_modules/@remix-run/dev/dist/cli/run.js:271:7) {
  errno: -32,
  code: 'EPIPE',
  syscall: 'write'
}
 ELIFECYCLE  Command failed with exit code 1.

 

strace 看到的信息没有帮助

22773 access("node:internal/streams/writable", F_OK) = -1 ENOENT (No such file or directory)
22773 access("node:internal/stream_base_commons", F_OK) = -1 ENOENT (No such file or directory)
22773 close(42<socket:[147003]>)        = 0
22773 write(26</dev/pts/3>, "Error: write EPIPE\n\33[90m    at __node_internal_captureLargerStackTrace (node:internal/errors:563:5)\33[39m\n\33[90m    at __node_inte"..., 4078) = 4078
22773 kill(22854, SIGKILL)   

于是在代码中加一行输出,看它到底执行了什么?

 9213 var Runtime = class {
 9214   #process;
 9215   #processExitPromise;
 9216   async updateConfig(configBuffer, options) {
 9217     await this.dispose();
 9218     const command = getRuntimeCommand();
 9219     const args = getRuntimeArgs(options);
 9220       console.log("command: ", command, "args: ", args);   <------------
 9221     const FORCE_COLOR2 = $.enabled ? "1" : "0";
 NORMAL  stable | node_modules/.pnpm/miniflare@3.20250214.2/node_modules/miniflare/dist/src/index.js 

看到输出如下:

command:  /mnt/vm/project/bolt.diy/node_modules/.pnpm/@cloudflare+workerd-linux-64@1.20250214.0/node_modules/@cloudflare/workerd-linux-64/bin/workerd args:  [
  'serve',
  '--binary',
  '--experimental',
  '--socket-addr=entry=127.0.0.1:0',
  '--external-addr=loopback=127.0.0.1:42387',
  '--control-fd=3',
  '-'
]

于是手工运行一下命令:/mnt/vm/project/bolt.diy/node_modules/.pnpm/@cloudflare+workerd-linux-64@1.20250214.0/node_modules/@cloudflare/workerd-linux-64/bin/workerd

运行失败退出,但看到了 /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /mnt/vm/project/bolt.diy/node_modules/.pnpm/@cloudflare+workerd-linux-64@1.20250214.0/node_modules/@cloudflare/workerd-linux-64/bin/workerd)
有个疑问,我的操作系统不至于没有包含这个版本号的GLIBC吧?

运行命令:ldd --version
ldd (Debian GLIBC 2.28.21-1+deepin-1) 2.28
好家伙,发现deepin20.9的GLIBC版本是定制的,搞不懂 deepin 为什么自己要定制一个版本号,上次安装的 LocalSend 运行不起来也是因为这个glibc定制版本号的问题导致

找到问题后,在deepint系统下我不可能去换它底层的glibc,只能选择用docker 运行 bolt.diy了

### 关于 Bolt.diy 开发者文档或教程 Bolt.diy 作为一款新兴的编程工具,继承自知名的 Bolt.new 并引入了显著改进——特别是开源这一特性[^1]。对于希望深入了解并利用此平台进行开发工作的专业人士而言,获取官方文档和支持资源至关重要。 #### 官方网站与社区支持 访问官方网站通常是获得最新开发者指南和技术文章的最佳途径。尽管具体网址未在此提及,通常这类项目的官网会设有专门章节介绍如何安装、配置以及使用该软件。此外,活跃的在线论坛和社交媒体群组也是不可忽视的信息源,能够帮助解决实际操作过程中遇到的具体难题。 #### GitHub仓库 鉴于 Bolt.diy 是一个开源项目,GitHub 成为了另一个重要的学习渠道。在这里不仅可以找到完整的源码库,还有详细的 README 文件说明如何编译运行程序;更重要的是,通过 Issues 和 Pull Requests 页面可以看到其他贡献者的讨论记录,从中汲取宝贵经验教训的同时也可以参与到更广泛的协作当中去。 #### 实践案例分享 许多早期使用者会在博客上发表关于他们采用 Bolt.diy 构建应用的经验总结。这些实战报告往往包含了从零起步直至完成整个项目的全过程描述,非常适合初学者模仿练习。同时,部分高级玩家可能会公开自己精心设计的教学视频系列,在视觉化教学的帮助下加速掌握新技能的速度。 ```python # 示例:简单的 Python 脚本用于展示如何集成第三方 API (假设场景) import requests def fetch_data_from_api(url): response = requests.get(url) if response.status_code == 200: return response.json() else: raise Exception('Failed to load data') if __name__ == "__main__": api_url = 'https://example.com/api/v1' try: result = fetch_data_from_api(api_url) print(result) except Exception as e: print(e) ``` 上述代码片段仅作为一个通用例子来体现良好的编程实践方式,并不特指任何特定于 Bolt.diy 的实现细节。不过值得注意的是,在编写此类脚本时遵循良好习惯如异常处理等是非常必要的[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值