Github 操作:在运行程序/路径中找不到依赖项锁定文件

Posted

技术标签:

【中文标题】Github 操作:在运行程序/路径中找不到依赖项锁定文件【英文标题】:Github actions: Dependencies lock file is not found in runners/path 【发布时间】:2021-10-08 20:51:47 【问题描述】:

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

root
  |- frontend
  |- server (Express App)

Github 操作:

name: Node.js CI

on:
  push:
    branches: [ main ]

jobs:
  build:

    runs-on: self-hosted
        
    strategy:
      matrix:
        node-version: [14.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js $ matrix.node-version 
      uses: actions/setup-node@v2
      with:
        node-version: $ matrix.node-version 
        cache: 'npm'
    - run: npm ci
      working-directory: './server'
    - run: npm run start
      working-directory: './server'

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

Dependencies lock file is not found in /home/username/runners.../repository_name. Supported file patterns: package-lock.json,yarn.lock

显然它并没有尝试在.../reposirtoy_name/server 中运行。

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

【问题讨论】:

它似乎坏了,因为设置步骤 (Use Node.js $ matrix.node-version ) 在存储库根目录中查找这些文件。您是否尝试在前两个步骤之间执行run: cd server 【参考方案1】: 您必须在server 目录中包含package-lock.json 或者您可以使用npm install 代替npm ci

npm docs 说:

简而言之,使用 npm install 和 npm ci 的主要区别是:

项目必须具有现有的 package-lock.json 或 npm-shrinkwrap.json。 如果包锁中的依赖项与 package.json 中的依赖项不匹配,npm ci 将退出并报错,而不是更新包锁。 . . .

【讨论】:

我在服务器和前端目录中都有 package.json。 是的,package.json 始终是必需的,我的意思是 package-lock.json【参考方案2】:

如果您的问题专门针对尝试缓存的使用 Node.js,那么当您有多个 package-lock.json 时,您可以在其中指定此类情况的路径。

在此指定 https://github.com/actions/setup-node

【讨论】:

以上是关于Github 操作:在运行程序/路径中找不到依赖项锁定文件的主要内容,如果未能解决你的问题,请参考以下文章

Gradle在本地Maven存储库中找不到现有的依赖项

在 web-app 中找不到 Spring ContextLoaderListener 但在系统类路径中找到

为啥 Intellij 在 pom.xml 中找不到任何 Maven 依赖项?

Maven 在 IntelliJ 中找不到依赖项

包括自定义 PTransform 导致在 GCP 的 Dataflow 作业中找不到依赖项

第三方 dll 在 ASP.NET MVC 项目中找不到它的依赖项