Travis CI部署Firebase Hosting时www目录文件丢失问题求助
我之前也碰到过一模一样的情况——明明script阶段已经成功生成了静态文件到www目录,结果deploy环节Firebase工具愣是说找不到任何文件,折腾了好一阵才找到根源。先给你吃个定心丸:Travis CI默认不会在script和deploy阶段之间主动删除文件,问题基本出在配置细节或者环境路径的小疏漏上。
先结合你的配置和日志拆解下问题:
日志里明确输出了
DONE Build complete. The www directory is ready to be deployed.,说明构建环节完全没问题,静态文件确实生成了
但deploy时Firebase提示found 0 files in www,这意味着Firebase CLI在当前工作路径下找不到www目录里的内容
下面是几个针对性的解决办法,按优先级尝试:
1. 开启skip_cleanup(最常见的修复方案)
虽然Travis官方说默认不会清理构建产物,但在某些场景下(比如使用了某些第三方provider),deploy前会触发自动清理。你只需要在.travis.yml的deploy区块里加上skip_cleanup: true,禁止Travis清理构建出来的www目录:
deploy: provider: firebase project: my-firebase-project token: secure: FIREBASE_SECURE_TOKEN skip_cleanup: true # 关键:禁止清理构建产物
2. 验证www目录的存在(排查用)
为了确认deploy前www目录的文件确实还在,可以在script后面加一个after_script步骤,列出www目录的内容:
after_script: - ls -la www # 输出www目录的所有文件和文件夹
重新构建后,你可以在Travis日志里看到这个命令的输出,直接确认文件是否存在,排除“构建产物莫名消失”的疑问。
3. 升级Firebase CLI版本
旧版本的Firebase工具可能和Travis的Node环境存在兼容性问题,导致路径识别出错。你可以在install阶段强制安装最新版的firebase-tools:
install: - npm install @vue/cli - npm install - npm install -g firebase-tools@latest # 安装最新版Firebase CLI
4. 检查路径大小写(容易忽略的细节)
Travis的运行环境是Linux,路径区分大小写!确认你的firebase.json里的"public": "www"和实际构建生成的目录名称完全一致(比如不要写成WWW或者Www)。
修改配置后重新触发构建,应该就能解决Firebase找不到文件的问题了。
内容的提问来源于stack exchange,提问作者vietnem

