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了