Satis未抓取包因配置错误而非网络问题:需检查require-all、require白名单、composer.json一致性、github-protocols强制HTTPS、packagist.org禁用及镜像URL结尾斜杠。

packages.json 为空或包数量为 0
生成的 web/packages.json 里 packages 字段是空对象或根本没内容,说明 Satis 没成功抓取任何包。这不是网络超时,而是配置层直接跳过了解析。
- 检查
satis.json中"require-all"是否设为true;若为false,必须显式在"require"里列出所有要镜像的包名和版本约束 - 确认每个被 require 的包,在其 Git 仓库根目录下存在合法的
composer.json,且name字段与 require 中完全一致(大小写、vendor 名、分隔符) - 如果启用了
"require-dependencies": true,但某个依赖不在"require"白名单中,Satis 会静默跳过它,不报错也不警告 - 运行
git ls-remote -h https://your-git.com/vendor/pkg.git验证该 URL 能否被 Git 正常访问;若失败,Satis 构建阶段就会忽略整个仓库
构建时报 “Could not fetch https://api.github.com/…”
这通常不是 GitHub Token 缺失,而是请求被拦截或协议不匹配——Satis 默认尝试用 git+ssh 或 git+https 协议去调 GitHub API,而企业防火墙或代理常只放行标准 HTTPS。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在
satis.json根对象加字段:"github-protocols": ["https"],强制走 HTTPS 而非 Git 协议 - 确保服务器能解析并访问
api.github.com和github.com;可用curl -I https://api.github.com/rate_limit测试连通性 - 若需 Token,设环境变量
GITHUB_TOKEN=xxx即可,Satis 会自动读取;不要硬编码进 URL 或配置文件 - 注意:GitHub API 未登录状态每小时限流 60 次,一旦触发,后续请求全返回 403,必须加 Token 或登录态
客户端 composer update 仍走 packagist.org
Satis 生成的是静态文件,不提供动态服务。如果 composer update 还在连官方源,说明客户端压根没读到你的镜像——问题一定出在链路中间某处。
- 先手动访问
curl -I https://satis.example.com/packages.json,确认返回 HTTP/2 200 且响应头含Content-Type: application/json - 项目级
composer.json必须包含"packagist.org": false,否则 Composer 默认优先查官方源,私有镜像只是 fallback - 镜像 URL 必须以
/结尾,例如"https://satis.example.com/";少一个斜杠,Composer 会拼成/packages.json→/packages.json→ 404 后静默回退 - 别依赖全局配置;
composer config -g repo.packagist在 CI 或多用户环境极不可靠,应改用项目级配置:composer config repo.packagist composer https://satis.example.com/
require 时提示 “Package xxx is not available”
这个错误不是网络不通,而是 name/version 匹配失败——Satis 对包标识的校验非常严格,差一个字符、多一个空格都会导致找不到。
- 检查
satis.json中"require"的写法是否和目标包composer.json里的"name"和"version"完全一致,例如"phpunit/phpunit": "^9.5"≠"phpunit/phpunit": "9.5.*" - 若目标包用的是
dev-main分支,确保其composer.json中没写死"version": "dev-main"(应删掉该字段,让 Composer 从 Git 推断) - 确认 Satis 构建后,
packages.json中对应包的name键值与你composer require时输入的完全一致(包括大小写) - 执行
composer show --all | grep xxx可快速验证当前已知包列表,避免凭空猜测
packagist.org 没显式关掉、packages.json 权限为 403,都会导致 Composer 静默放弃,连错误日志都不留。

















