Github 操作:在 runners/path 中找不到依赖项锁定文件

Dha*_*raj 28 github github-actions

我有一个用于服务器和前端的 Github 存储库。目录结构如下:

root
  |- frontend
  |- server (Express App)
Run Code Online (Sandbox Code Playgroud)

GitHub 操作:

root
  |- frontend
  |- server (Express App)
Run Code Online (Sandbox Code Playgroud)

我只有一项工作来构建 Express 服务器(还不是前端),所以我working-directory./server. 但是,我仍然收到错误:

Dependencies lock file is not found in /home/{username}/runners.../repository_name. Supported file patterns: package-lock.json,yarn.lock
Run Code Online (Sandbox Code Playgroud)

所以显然它并没有试图跑进去.../reposirtoy_name/server

在此输入图像描述

我只是想在单个 Github 操作中构建服务器和前端。

ash*_*117 49

您的问题可能专门与“uses: actions/setup-node”有关。他们在文档中提到,如果您有多个锁定文件或非根目录中的锁定文件

就我而言,我有一个带有嵌套项目/目录的项目。在我的 GitHub 操作中,我想在嵌套项目/目录上运行 npm test,因此我必须指定在特定子目录中使用我的 package.json。仔细检查您是否使用cache-dependency-path指定了正确的目录。

文档

此处指定
https://github.com/actions/setup-node#caching-global-packages-data


Wah*_*ian 24

尝试一下这个解决方案。它对我来说有效。在构建中插入默认工作目录

build:
    runs-on: self-hosted    
    defaults:
       run:
         working-directory: ./server/
    strategy:
       matrix:
       node-version: [14.x]
Run Code Online (Sandbox Code Playgroud)

然后包含缓存依赖路径。这应该是 package-lock.json 文件的位置

with:
    node-version: ${{ matrix.node-version }}
    cache: 'npm'
    cache-dependency-path: './server/package-lock.json'
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。经过几个小时的查找,您的答案是唯一一个在工作目录、缓存和缓存依赖路径方面没有语法错误的答案。 (2认同)

mih*_*123 6

总览

如果将缓存属性与 actions/setup-node@v3 一起使用,请确保您的结帐存储库步骤位于设置节点步骤之前。

对我来说,这是由 actions/setup-node@v3 上的缓存属性引起的。没有它 - 一切都很好。有了它——失败了。原因是,它使用package-lock.json(或yarn.lock)文件作为缓存密钥。

请参阅: https: //github.com/actions/setup-node

我的签出存储库步骤 (actions/checkout@v2) 是在设置节点步骤之后,因此它没有找到 package-lock.json 文件 - 因为它尚未签出。