Node.js工程化实战:从开发热更到生产部署的6大核心工具链解析
1. 这不是工具清单而是一张Node.js工程化生存地图你刚写完一个Express接口本地node app.js能跑通但改一行代码就得手动CtrlC再回车你听说nodemon能热更新装上后却卡在“watching 1234 files”不动项目要上线了同事说用pm2守护进程你照着文档敲完pm2 start app.js结果日志里全是Cannot find module express想升级Node版本nvm install 18.19.0执行到一半报错“权限被拒绝”最后发现是Homebrew权限问题更别提发包时npm publish提示401 Unauthorized翻遍文档才明白原来.npmrc里token没配对——这些不是零散的报错而是Node.js开发者从“能跑”迈向“稳产”的必经关卡。这篇笔记不讲抽象概念只拆解6个真实场景下的决策逻辑、参数陷阱和现场排障路径为什么cnpm比npm快但不能替代它yarn的berry版本为何连node_modules都不要了pm2的--watch和nodemon的--watch根本不是一回事npm publish前必须npm login但yarn publish却不需要——这些差异背后是包管理器对“依赖锁定”“网络策略”“权限模型”的根本性设计取舍。我带过3个前端团队所有新人踩过的坑都浓缩在这6个工具的实操细节里nvm切换版本时which node路径没刷新怎么办pm2部署后CPU飙到95%如何定位是内存泄漏还是日志刷屏yarn的pnp模式下require(fs)报错怎么解答案不在官方文档里而在你执行每条命令时终端返回的那行小字提示中。2. 工具选型背后的底层逻辑为什么不是“哪个更好”而是“谁解决什么问题”2.1 启动方式选择node、nodemon、pm2不是替代关系而是分层协作很多人把node、nodemon、pm2当成“启动命令三选一”这是最大的认知偏差。它们解决的是完全不同的生命周期问题node是解释器本体就像汽车的发动机——没有它一切都不转。但它不处理“代码改了怎么办”“进程挂了谁重启”“多核CPU怎么利用”这些工程问题。nodemon是开发阶段的代理守护者它监听文件变化触发node重启。但它的重启是“暴力杀进程新进程”不保证状态清理比如未关闭的数据库连接会堆积且无法跨机器部署。pm2是生产环境的进程编排平台它不只是守护进程还提供负载均衡pm2 start app.js -i max、日志聚合pm2 logs、性能监控pm2 monit、零停机重载pm2 reload app——这些能力nodemon天生不具备。提示nodemon的--delay参数常被忽略。当项目有大量文件如node_modules时nodemon默认监听所有.js文件修改package.json可能触发误重启。实测下来加--delay 25002.5秒防抖能避免90%的无效重启。原理是文件系统事件inotify可能分批发出delay让nodemon等所有变更事件收齐再执行重启。pm2的--watch和nodemon的--watch表面相似实则天壤之别nodemon --watch src --ext js,json app.js只监听src目录下.js和.json文件变化后执行node app.jspm2 --watch --ignore-watchnode_modules start app.js监听整个项目目录除node_modules但重启逻辑是pm2 reload而非kill fork会复用部分进程资源且支持--watch-delay精确控制防抖时间。2.2 包管理器选型npm、cnpm、yarn的核心差异在“确定性”与“网络策略”npm、cnpm、yarn常被简单归类为“下载速度差异”但真正决定选型的是依赖解析的确定性和网络容灾能力工具锁定机制网络策略典型适用场景npm(v7)package-lock.json基于语义化版本哈希校验默认registry.npmjs.org国内需配置镜像标准化CI/CD要求可审计性cnpm复制npm锁文件无独立锁定逻辑阿里云镜像registry.npmmirror.com自动fallback国内开发机追求极致安装速度yarn(v1)yarn.lock强制固定子依赖版本如lodash4.17.21可配置多个registry支持离线模式大型单体应用依赖树复杂度高关键细节yarn的berryv3彻底抛弃node_modules改用.yarn/cache和PnPPlugnPlay机制。PnP直接将模块路径映射到ZIP包内省去node_modules符号链接开销。但代价是所有依赖必须声明exports字段否则require(xxx)会失败。某次我升级webpack到v5yarn berry报错Cannot find module tapable查源码发现tapable的package.json里缺exports: ./lib/index.js——这是PnP的硬性要求npm却能绕过。cnpm的“快”本质是镜像同步策略阿里云镜像每10分钟同步一次npm官方源且CDN节点全球覆盖。但要注意cnpm install生成的package-lock.json仍指向registry.npmjs.org若CI服务器没配镜像npm ci会拉取原始源导致超时。解决方案是统一用npm config set registry https://registry.npmmirror.com而非混用cnpm。2.3 版本管理器nvm不是“切换版本”而是“隔离环境”nvm常被误解为“一键换Node版本”实际它是基于shell环境变量的沙箱系统。执行nvm use 18.19.0时nvm做了三件事将~/.nvm/versions/node/v18.19.0/bin加入PATH最前设置NODE_VERSIONv18.19.0导出NVM_BIN~/.nvm/versions/node/v18.19.0/bin这意味着nvm切换的是当前shell会话的PATH而非全局Node。所以常见问题“nvm use后which node还是旧路径”是因为你在zsh中执行nvm use但VS Code终端默认启动bash未加载nvm.sh或nvm初始化脚本未写入~/.zshrcMac或~/.bashrcLinux实操心得nvm alias default 18.19.0设置默认版本后新打开的终端会自动加载该版本但不会影响已存在的终端会话。我曾因此在部署脚本里写nvm use 16.20.0 npm run build结果CI服务器因未执行nvm use始终用系统自带Node 12构建失败。3. 核心操作全流程拆解从本地开发到生产部署的完整链路3.1 开发阶段nodemon的精准监听配置nodemon默认监听当前目录所有.js、.mjs、.coffee、.litcoffee、.json文件但大型项目中这会导致监听node_modules引发误重启如npm update时监听dist目录构建产物造成循环重启dist/app.js变化 →nodemon重启 → 构建又生成dist/app.js正确配置应遵循最小监听原则# 只监听src目录下的js/json文件忽略node_modules和dist nodemon --watch src --ext js,json --ignore node_modules/** --ignore dist/** app.js进阶技巧用nodemon.json配置文件替代长命令支持更复杂的规则{ watch: [src/, config/], ext: js,json,ts, ignore: [node_modules/**, dist/**, logs/**], exec: cross-env NODE_ENVdevelopment ts-node src/index.ts, delay: 2500, signal: SIGTERM }这里cross-env确保环境变量在Windows和Unix下一致ts-node直接运行TypeScriptdelay 2500防抖signal SIGTERM让进程优雅退出触发process.on(SIGTERM, ...)清理DB连接。注意nodemon的--exec参数会覆盖默认的node命令。如果项目用ESMtype: module需显式指定--exec node --loader ts-node/esm否则报错ERR_REQUIRE_ESM。3.2 构建与发布npm publish的权限链与安全实践npm publish失败90%源于权限配置错误。其认证流程是三级验证本地凭证~/.npmrc中的//registry.npmjs.org/:_authTokenxxxxx作用域权限若发布myorg/utils需npm access grant read-write myorg:utils user包名所有权首次发布my-awesome-lib需npm adduser注册且包名未被占用常见陷阱npm login生成的token默认是read-only发布需npm token create --read-write.npmrc中registry必须与publishConfig.registry一致否则npm publish会向错误registry发送请求发布私有包时package.json中必须声明publishConfig: { registry: https://registry.npmjs.org/ }否则npm publish会尝试推送到默认registry即使.npmrc已配置安全实践禁止在CI脚本中硬编码token。正确做法是# CI配置中设置环境变量NPM_TOKEN echo //registry.npmjs.org/:_authToken${NPM_TOKEN} ~/.npmrc npm publish这样token不会出现在构建日志中。某次我们因在package.json的scripts里写publish: npm publish --auth-token $TOKEN导致token泄露在GitHub Actions日志里紧急撤回了所有token。3.3 生产部署pm2的进程管理与故障自愈pm2部署不是简单pm2 start app.js需分三层配置第一层基础启动# 指定环境、日志路径、最大内存 pm2 start app.js \ --name my-api \ --env production \ --log-date-format YYYY-MM-DD HH:mm:ss \ --max-memory-restart 512M \ --output ./logs/out.log \ --error ./logs/err.log第二层集群与负载均衡# 启动4个实例自动分配端口需app.js中读取process.env.PORT pm2 start app.js -i 4 --name api-cluster # 或使用负载均衡策略 pm2 start app.js -i max --balance least-response-time第三层自动化运维# 部署后自动重启配合Git Hook pm2 deploy ecosystem.config.js production # 生产环境配置文件ecosystem.config.js module.exports { apps: [{ name: my-api, script: ./app.js, instances: max, exec_mode: cluster, watch: true, ignore_watch: [node_modules, logs], env: { NODE_ENV: development }, env_production: { NODE_ENV: production } }], deploy: { production: { user: deploy, host: 192.168.1.100, ref: origin/main, repo: gitgithub.com:myorg/my-api.git, path: /var/www/my-api, post-deploy: npm install pm2 reload ecosystem.config.js --env production } } };关键参数解读--max-memory-restart 512M进程内存超512MB自动重启防止内存泄漏拖垮服务器--watch监听文件变化但仅限app.js所在目录需配合ignore_watch避免误触发instances: max启动CPU核心数的实例pm2会自动分配端口通过process.env.PORT注入实操心得pm2的restart和reload有本质区别。restart是杀进程新进程reload是滚动更新逐个重启实例实现零停机。但reload要求应用支持graceful shutdown——即收到SIGUSR2信号时先关闭HTTP服务器server.close()等待现有请求完成后再退出。某次我们未实现优雅关闭pm2 reload导致正在上传的文件中断客户投诉率飙升。3.4 版本管理nvm的多版本共存与全局二进制隔离nvm的核心价值是版本隔离而非单纯切换。典型场景项目A要求Node 14LTS项目B要求Node 18最新同时开发时互不干扰CI服务器需测试Node 16/18/20三个版本nvm test可并行执行nvm的版本安装路径是~/.nvm/versions/node/vX.Y.Z/每个版本独立bin/node、npm二进制文件lib/Node核心库share/文档因此nvm use 16.20.0后which node返回~/.nvm/versions/node/v16.20.0/bin/node而npm指向同一目录下的npm。但注意npm全局安装的包如typescript会安装到~/.nvm/versions/node/v16.20.0/lib/node_modules/切换版本后这些包不可用——这正是nvm的设计全局包也随Node版本隔离。解决方案项目级全局包用npx调用npx tscnpx会自动匹配当前Node版本的typescript跨版本通用工具安装到系统Nodesudo npm install -g yarn但需确保系统Node版本稳定常见问题排查nvm list显示版本但nvm use X.Y.Z报错“Version not installed”检查~/.nvm/versions/node/目录是否存在对应版本文件夹缺失则nvm install X.Y.Znvm current显示system说明当前shell未加载nvm执行export NVM_DIR$HOME/.nvm [ -s $NVM_DIR/nvm.sh ] \. $NVM_DIR/nvm.sh手动加载4. 常见问题与实战排障从报错日志到根因定位4.1nodemon监听失效文件系统事件限制与解决方案现象修改src/index.js后nodemon无反应终端静默。排查路径确认监听范围执行nodemon --dump查看watching列表是否包含src/检查文件系统事件数Linux默认inotify监听数为8192大型项目易超限# 查看当前使用量 cat /proc/sys/fs/inotify/max_user_watches # 临时提升需root sudo sysctl fs.inotify.max_user_watches524288 # 永久生效 echo fs.inotify.max_user_watches524288 | sudo tee -a /etc/sysctl.conf验证文件系统类型nodemon不支持NTFSWindows子系统WSL1需用ext4或启用WSL2根本原因nodemon依赖chokidar库chokidar在Linux用inotifymacOS用fseventsWindows用FindFirstChangeNotification。当inotify句柄耗尽chokidar降级为轮询polling导致延迟高达1-2秒。此时nodemon --legacy-watch可强制轮询但性能极差。4.2pm2内存泄漏诊断从monit到heapdump现象pm2 monit显示my-api内存持续增长从100MB升至1.2GB后自动重启。诊断步骤实时内存快照# 获取进程PID pm2 show my-api | grep pid: # 生成heapdump需提前安装heapdump npm install heapdump # 在代码中插入 const heapdump require(heapdump); setInterval(() { heapdump.writeSnapshot(); }, 60000); // 每分钟生成一次分析快照用Chrome DevTools打开.heapsnapshot文件按Constructor排序查找Array、String、Closure异常增长定位泄漏点某次我们发现Closure中req对象堆积原因是中间件未调用next()导致req被闭包持有无法GC注意pm2的--max-memory-restart是兜底方案不能替代代码修复。曾有个服务因未关闭数据库连接池每次请求创建新连接pm2重启后连接数翻倍最终打满MySQL连接数。4.3npm publish401错误Token失效与作用域权限现象npm publish返回401 Unauthorized但npm login成功。根因分析表可能原因验证命令解决方案Token过期npm token listnpm token revoke tokennpm token create作用域权限不足npm access ls-packages usernpm access grant read-write scope:package userRegistry不匹配cat ~/.npmrc | grep registry确保publishConfig.registry与.npmrc一致包名已被占用npm view package-name改包名或联系原作者关键细节npm token list输出的CIDR列显示IP白名单。若CI服务器IP变动需重新生成token或放宽CIDR范围如0.0.0.0/0但不推荐。4.4yarnPnP模式下模块找不到exports字段缺失现象yarn berry项目运行时报错Error: Cannot find module lodash但yarn why lodash显示已安装。原因PnP要求所有依赖在package.json中声明exports字段否则无法解析路径。lodash的旧版本4.17.21无此字段。解决方案升级依赖yarn up lodashlatest手动补全在项目根目录package.json中添加resolutions: { lodash: 4.17.21 }临时降级yarn set version classic切回yarn v1实操心得yarn berry的.pnp.cjs文件是模块解析的核心。用node -e console.log(require(./.pnp.cjs).resolveRequest(lodash, __dirname))可手动测试模块解析路径比报错信息更直观。5. 经验沉淀那些文档里不会写的硬核技巧5.1nvm与Docker的协同构建多版本Node镜像Dockerfile中不应RUN npm install而应利用nvm预装多版本FROM node:18-alpine # 安装nvm RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 预装Node 16和18 RUN /bin/sh -c . ~/.nvm/nvm.sh nvm install 16.20.0 nvm install 18.19.0 # 应用默认版本 RUN /bin/sh -c . ~/.nvm/nvm.sh nvm alias default 18.19.0 # 复制项目 COPY . . # 构建时指定Node版本 RUN /bin/sh -c . ~/.nvm/nvm.sh nvm use 18.19.0 npm ci这样CI可并行测试不同Node版本docker run -e NODE_VERSION16.20.0 my-app npm test。5.2pm2日志切割避免磁盘爆满pm2默认不切割日志out.log可能达GB级。启用pm2-logrotate插件pm2 install pm2-logrotate # 配置每天切割保留30天压缩旧日志 pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 30 pm2 set pm2-logrotate:compress true pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss关键参数max_size单位是字节10M即1010241024字节。某次我们设100M日志切割不及时导致服务器磁盘100%API全部超时。5.3nodemon与Webpack Dev Server的共存当项目同时用nodemon后端和webpack-dev-server前端需避免端口冲突# 后端nodemon监听3000 nodemon --watch src --ext js,json app.js # 前端webpack-dev-server监听8080并代理API # webpack.config.js devServer: { port: 8080, proxy: { /api: { target: http://localhost:3000, changeOrigin: true } } }此时npm run dev需并行启动两个服务。用concurrentlyscripts: { dev: concurrently \npm run server\ \npm run client\, server: nodemon app.js, client: webpack serve }5.4npm私有Registry的故障转移企业私有Registry如Verdaccio可能宕机。npm支持多registry fallback# .npmrc registryhttps://registry.mycompany.com mycompany:registryhttps://registry.mycompany.com //registry.mycompany.com/:_authToken${VERDACCIO_TOKEN} # 故障时fallback到npmjs always-authtrue # 但npm不原生支持fallback需用nrm工具 nrm add mycompany https://registry.mycompany.com nrm add npm https://registry.npmjs.org nrm use mycompany当mycompany不可用时手动nrm use npm切回公共源。自动化方案是CI脚本中if ! curl -s --head --fail https://registry.mycompany.com; then npm config set registry https://registry.npmjs.org fi6. 工程化思维工具链不是终点而是起点写完npm publish并不意味着交付完成真正的工程化闭环是发布后验证npm view my-lib version确认版本号npm pack生成tarball本地安装测试部署后巡检pm2 show my-api检查status、memory、uptimepm2 logs my-api --lines 100查看启动日志监控告警用pm2的pm2 monit或集成Prometheus当CPU 80%持续5分钟触发企业微信告警回滚机制pm2 deploy ecosystem.config.js production revert一键回退到上一版我见过太多团队把pm2 start当部署终点结果线上报错Cannot find module dotenv才发现.env文件没上传或者npm install时网络波动导致依赖不全。真正的稳定性来自每个环节的确定性验证nodemon的--dump确认监听路径pm2的--show确认环境变量npm publish后的npm info确认包内容。最后分享一个血泪教训某次我们用yarn berry发布包package.json中type: module但main字段指向index.jsCommonJS。npm publish成功但用户安装后import * as lib from my-lib报错ERR_REQUIRE_ESM。根因是yarn berry的PnP不兼容混合模块类型。解决方案是统一用ESMmain: ./dist/index.mjs并在package.json中声明exports: { .: ./dist/index.mjs }。工具链的价值永远在于它暴露了你代码中隐藏的假设。

相关新闻

Node.js 工程化实战:从本地开发到生产部署的六大核心链路

Node.js 工程化实战:从本地开发到生产部署的六大核心链路

1. 这不是工具清单,而是一套 Node.js 工程师的日常生存手册 你有没有过这样的时刻:刚 clone 下来一个项目, npm install 卡在 node-gyp rebuild 上一动不动,终端里全是红字;改完一行代码想看效果,得手…

2026/10/17 7:37:11 阅读更多 →
SITC实践指南(共识一):多重免疫组化有多种,不止TSA-mIHC

SITC实践指南(共识一):多重免疫组化有多种,不止TSA-mIHC

肿瘤微环境(TME)中免疫细胞的组成、功能蛋白的表达模式、基质细胞的空间分布,与疾病预后和免疫治疗响应关系紧密。比如肿瘤细胞和免疫细胞的PD-L1表达水平、治疗前肿瘤标本中存在的CD8 T细胞浸润密度,均与免疫检查点抑制剂治疗效果…

2026/10/17 7:37:11 阅读更多 →
MatIEC Stage4源码解析:从AST到C代码的PLC编译器后端实现

MatIEC Stage4源码解析:从AST到C代码的PLC编译器后端实现

MatIEC 这个开源项目,估计玩 PLC 上位机开发或者做工业编译器的人多少都有印象。它比那些只能出汇编的教学编译器务实得多,整个架构直接照搬了经典的多阶段编译流程,词法、语法、语义一层层剥下去,最后在 Stage4 这个模块里把抽象…

2026/10/17 7:37:11 阅读更多 →

最新新闻

ADS-B Python环境搭建:从RTL-SDR驱动到航班数据解码

ADS-B Python环境搭建:从RTL-SDR驱动到航班数据解码

简介:这是一套面向Python开发者与航空数据爱好者的基础ADS-B消息处理工具库,适用于需要解析、模拟或调试ADS-B(自动相关监视)原始报文的初学者与中级实践者。资源提供完整的开源Python软件包,支持快速安装与即用式调用…

2026/10/17 8:20:20 阅读更多 →
Minimax H3本地部署全攻略:ComfyUI配置、显存优化与工作流实战

Minimax H3本地部署全攻略:ComfyUI配置、显存优化与工作流实战

1. 为什么要在本地跑 Minimax H3 而不是直接用在线版先把结论摆在前面:本地部署 Minimax H3 这件事,真正吸引人的地方不是"省钱",而是可控性。在线版你受限于排队、并发、审核策略、单次时长上限,而本地跑起来之后&…

2026/10/17 8:20:20 阅读更多 →
GDB调试全攻略:从core文件到多线程,一次讲清C/C++排查思路

GDB调试全攻略:从core文件到多线程,一次讲清C/C++排查思路

又一次在凌晨两点的终端里盯着滚动日志,printf打印了快二十行,还是不知道结构体里的那个字段是被谁写坏的。这种场景,写C/C的人多少都经历过。后来我给自己定了个规矩:遇到内存被改、偶发崩溃、指针越界这类问题,第一件…

2026/10/17 8:20:20 阅读更多 →
数据库语义网关DatI:打通BI与AI Agent的数据查询断层

数据库语义网关DatI:打通BI与AI Agent的数据查询断层

1. 为什么需要一个数据库语义网关:BI 与 Agent 之间的断层先说个背景。这几年我一直在做数据平台相关的后端工作,传统 BI 那套东西——报表、大屏、多维分析、看板——说实话已经相当成熟了,Power BI、帆软、Tableau 各有各的生态。但最近一两…

2026/10/17 8:20:20 阅读更多 →
企业级AI智能体交付实战:RAG、MCP与多智能体的工程化落地

企业级AI智能体交付实战:RAG、MCP与多智能体的工程化落地

我记得有一次帮一个团队做技术评审,Demo 跑得相当漂亮——问答、查订单、写摘要、生成周报,一气呵成,领导在旁边频频点头。我随口问了一句:如果知识库检索不到相关内容,智能体会怎么办?对方迟疑了一下说&am…

2026/10/17 8:20:20 阅读更多 →
Linux服务器YOLO批量推理优化:从30秒到0.1秒实战

Linux服务器YOLO批量推理优化:从30秒到0.1秒实战

1. 为什么别人批量推理0.1秒,你却要30秒?先说个我自己经历过的场景。两年前,我把训练好的YOLOv5模型放到一台Linux服务器上,准备跑一批监控视频抽帧图。心想模型都训好了,直接写个循环调用试一下,结果一跑傻…

2026/10/17 8:19:20 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →