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 操作:在运行程序/路径中找不到依赖项锁定文件的主要内容,如果未能解决你的问题,请参考以下文章
在 web-app 中找不到 Spring ContextLoaderListener 但在系统类路径中找到
为啥 Intellij 在 pom.xml 中找不到任何 Maven 依赖项?