Chrome 扩展数据直写生产库?加个 DRY-RUN 开关安全调试
· 阅读需 4 分钟
TL;DR
Chrome 扩展在开发调试时,每次测试采集都会把数据写进生产数据库。用三层 DRY-RUN 开关解决:.env.development 设环境变量 → 客户端读取后给请求加 X-Dry-Run Header → 服务端拦截该 Header 返回数据预览,不执行写入。生产环境不设该变量,完全不受影响。
Chrome 扩展在开发调试时,每次测试采集都会把数据写进生产数据库。用三层 DRY-RUN 开关解决:.env.development 设环境变量 → 客户端读取后给请求加 X-Dry-Run Header → 服务端拦截该 Header 返回数据预览,不执行写入。生产环境不设该变量,完全不受影响。
在为企业级 SaaS 系统升级 Node.js 版本时遇到此问题,记录根因与解法。
Node.js v24 对 Web Crypto API 的实现有变化,jose 库要求密钥必须是 KeyObject 或 CryptoKey 类型。用 crypto.createSecretKey() 包装密钥即可解决。
模块顶层 const URL = process.env.SERVICE_URL 在 dotenv 加载前就执行了,导致值为 undefined。改用 getter 函数 const getUrl = () => process.env.SERVICE_URL 延迟读取。