第一个站点到期前四天,我才发现源码根本不存在

极客阿强 中级 8小时前 114 浏览 4 点赞 约 2 分钟

threadkeeper.io 是我买的第一个域名,2025 年 8 月注册的。那时候刚结束社区学院的 AI 夏令营,硬盘里还躺着一堆 ccc-ai-pdf-project 这种命名的 Python 新手作业。六周后我上线了域名、博客、CLI、宣言——全在 Spaceship 的浏览器编辑器里点出来的,没建过 Git 仓库,没跑过 git commit,连个本地副本都没有。

页面顶端青色字写着:"Don't commit without context."

讽刺的是,我连提交都没做过。

续费通知来了,决定放弃。怀旧心态点进后台看最后一眼,五分钟顶天。想把代码拉下来留个念想,这才发现:世界上唯一的副本就跑在即将关机的那台服务器上。

第一个站点到期前四天,我才发现源码根本不存在


抢救现场:十九个文件,全靠手工拽下来

第一步不是怀旧,是抢救。把八个页面、所有静态资源全薅下来:落地页、博客、三篇文章、Dr. Kahlo 页面、还有一个 AWS 黑客松写的 Ariadne Clew 回顾应用。共 19 个文件。sitemap.xml 宣称只有四个页面——2025 年的我连站点地图都不信。

现归档在 GitHub Pages,每个文件附了 SHA-256,证明没动过一个字节:

earlgreyhot1701d.github.io/threadkeeper-archive

迟到一年,总算有了版本控制。


文件名叫 dom_js.js,当时我竟没眨眼

能读代码后发现的第一个问题:Ariadne Clew 七个 JS 模块,两套命名规范混用。

  • snake_case + _js.js 后缀api_js.jsdom_js.jsmain_js.js
  • camelCase 无后缀utils.jstheme.jsexportMarkdown.jsdragDrop.js
第一个站点到期前四天,我才发现源码根本不存在

同一个文件夹,七个文件,两种风格。

盯着 dom_js.js 看两秒:"dom, js, dot js" —— 后缀把扩展名重复了一遍。原因我太清楚了:聊天窗口里代码块标 dom_js,存文件时顺手加个 .js,跑通了就不管了。文件名就是张收据,记录着「这些文件是从对话框里复出来的,不是在工程里写的」。


一行 import 错了,整页按钮全瘫

main_js.js 开头六个 import,第三个写着:

import { getElement, getValue, ... } from './dom.js';

服务器上实际文件名:dom_js.js

ES 模块会先解析完整依赖图再执行。缺一个文件,整个模块图直接不运行——没有部分执行,没有降级,那五个正常解析的 import 也白搭。

页面上所有交互全在 main_js.js 里绑定:表单提交、复制、导出、主题切换、拖拽、初始 UI 状态。全挂了。

左边页面渲染得漂漂亮亮,右边控制台一行红字:

Failed to load resource: the server responded with a status of 404 (dom.js)

那是过期前几天我在自家浏览器里看到的现场。完美的静态页面,零交互。


以后再不敢裸奔上线了

现在回想,全是低级错误:没建仓库、没本地开发、没构建流程、没类型检查、连文件名大小写都不统一。但这也是唯一的路径——只有把东西真正推到生产环境、让它死在阳光下,下一次才会记得先 git init

存档里还有完整的控制台堆栈和网络瀑布图,想看现场的可以自己翻。

javascriptgitthreadkeeper.ioSpaceshipES modules

全部回复 (3)

小李爱学习 初级 8小时前
把域名转出前先 dig +trace 确认 NS 生效,别光看面帖子标题:第一个站点到期前四天,我才发现源码根本不存在
0 回复
小阿伟的日常 初级 8小时前
Spaceship 那个在线编辑器有没有导出 zip 或 Git 打包功能?没本地副本太冒险了。
0 回复
养生全栈 中级 8小时前
第一个项目也是全在浏览器里改,后来硬盘挂了才懂得建仓库
0 回复

发表回复

支持 Markdown 格式