You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中npm install无法找到package.json的问题求助

解决GitHub Actions中npm install找不到package.json的问题

问题概述

在GitHub Actions工作流中,已指定working-directory: testing-folder且目录下存在package.json,但执行npm install时仍报错找不到临时缓存目录中的package.json。本地执行流程正常,仅Actions环境出现该问题。

关键工作流片段:

- name: Create files
  working-directory: testing-folder
  run: |
    bash merge-package.sh
    iconv -f UTF-8 -t UTF-8 temp.json > package.json
    cat package.json
    npm install                                     <<<< FAIL

错误核心信息:

npm ERR! path /home/runner/.npm/_cacache/tmp/uyJJoq/package.json
npm ERR! enoent ENOENT: no such file or directory, open '/home/runner/.npm/_cacache/tmp/uyJJoq/package.json'

可能原因

  1. npm缓存异常:Actions环境的npm缓存存在损坏或路径映射错误,导致读取临时缓存目录而非当前工作目录的文件
  2. package.json格式/编码问题:合并生成的package.json可能存在隐藏字符或JSON语法错误,触发npm异常路径查找
  3. npm版本兼容性:Actions默认npm版本与本地环境不一致,对工作目录的处理逻辑存在差异

解决方案

方案1:清理npm缓存后执行安装

在npm install前强制清理缓存,避免缓存干扰:

- name: Create files
  working-directory: testing-folder
  run: |
    bash merge-package.sh
    iconv -f UTF-8 -t UTF-8 temp.json > package.json
    cat package.json
    npm cache clean --force
    npm install

方案2:显式指定工作目录路径

通过--prefix参数强制npm使用当前目录的package.json:

npm install --prefix .

方案3:验证package.json有效性

添加JSON语法校验,确保生成的文件无错误:

- name: Create files
  working-directory: testing-folder
  run: |
    bash merge-package.sh
    iconv -f UTF-8 -t UTF-8 temp.json > package.json
    cat package.json
    # 用Node.js内置工具验证JSON格式
    node -e "require('./package.json')"
    npm install

若校验失败,需先修复merge-package.sh的合并逻辑。

方案4:使用npm ci替代npm install

npm ci严格按照锁文件安装,避免缓存和版本不一致问题:

npm ci

注:若没有package-lock.json,可先执行npm install --package-lock-only生成。

替代方案

  • 预先生成依赖文件:在本地合并package.json并生成package-lock.json,提交到仓库后,Actions直接执行安装,跳过动态生成步骤
  • 切换包管理器:使用pnpm替代npm,其对工作目录的处理逻辑更稳定,执行pnpm install可能规避该问题

内容的提问来源于stack exchange,提问作者leon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 07:05:08