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

手动执行JS文件调用@actions/cache时缓存存取失败求助

问题原因与解决办法

这个报错的核心原因是:@actions/cache 包是专门为 GitHub Actions 运行环境设计的,它依赖 GitHub Actions 自动注入的环境变量(比如 ACTIONS_CACHE_URL、ACTIONS_RUNTIME_TOKEN)来连接 GitHub 的缓存服务。你手动执行脚本时,这些环境变量不存在,自然找不到缓存服务地址。

解决步骤:

  • 直接在 GitHub Actions 工作流中运行脚本
    这是最合理的做法,把你的脚本整合到 GitHub Actions 的 workflow 文件(比如 .github/workflows/build.yml)里,示例如下:

    name: Build with Cache
    on: [push]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - uses: actions/setup-node@v4
            with:
              node-version: 20
          - name: Run cache script
            run: node your-cache-script.js
            # 这里会自动注入所需的环境变量,@actions/cache 就能正常工作
    
  • 修正脚本里的笔误
    你的代码里最后一行用了 prodHash,但前面定义的是 key,这会导致保存缓存时出错,应该改成:

    await saveCache(cachePathes, key);
    
  • 如果非要在本地测试缓存逻辑
    放弃使用 @actions/cache,换成本地缓存方案,比如用 node-cache 或者自己读写文件实现:

    // 示例:本地文件缓存
    import fs from 'fs/promises';
    import path from 'path';
    import { execSync } from 'child_process';
    
    const cacheDir = './.local-cache';
    const cachePathes = ['dist'];
    
    async function checkLocalCache(key) {
      const cacheKeyPath = path.join(cacheDir, key);
      try {
        await fs.access(cacheKeyPath);
        // 缓存存在,复制缓存文件到目标目录
        await fs.cp(path.join(cacheDir, 'dist'), './dist', { recursive: true });
        return true;
      } catch {
        return false;
      }
    }
    
    async function saveLocalCache(key) {
      await fs.mkdir(cacheDir, { recursive: true });
      await fs.cp('./dist', path.join(cacheDir, 'dist'), { recursive: true });
      await fs.writeFile(path.join(cacheDir, key), new Date().toISOString());
    }
    
    const key = getHashKey();
    const hasCache = await checkLocalCache(key);
    if (!hasCache) {
      execSync('npm run build');
      await saveLocalCache(key);
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:59:55