GitLab CI执行$(npm bin)/hugo突发Unknown: command not found错误求助
GitLab CI 执行Hugo构建报错的修复方案
问题原因
你的CI配置存在逻辑矛盾:before_script里用npm install -g hugo全局安装了Hugo,但构建脚本里却尝试通过$(npm bin)/hugo调用项目本地node_modules目录下的Hugo。全局安装的包不会出现在项目本地的npm bin路径中,再加上近期node:latest镜像可能更新了npm的行为,导致之前偶然能运行的逻辑彻底失效,触发Unknown: command not found错误。
修复方法
方法1:直接调用全局Hugo
修改CI脚本中的命令,去掉$(npm bin)/前缀,直接使用全局安装的Hugo:
test: stage: test script: - hugo --environment staging artifacts: paths: - test pages: stage: deploy script: - hugo --environment production artifacts: paths: - public
方法2:本地安装Hugo(更稳妥)
把全局安装改为项目本地安装,确保$(npm bin)/hugo能找到对应命令:
before_script: - npm install - npm install hugo # 移除-g参数,安装到项目本地node_modules
额外优化建议
- 避免使用
node:latest镜像,固定具体版本(如node:20),防止镜像更新引发未知问题 - 可以直接使用Hugo官方镜像(如
klakegg/hugo:latest)替代Node镜像,无需手动安装Hugo,简化依赖配置
内容的提问来源于stack exchange,提问作者papanito
相关产品推荐
相关产品推荐

