【问题标题】:Docker - yarn install: Usage Error: The project in /app/package.json doesn't seem to have been installedDocker - 纱线安装:使用错误:/app/package.json 中的项目似乎没有安装
【发布时间】:2022-07-06 11:56:14
【问题描述】:

以下是我用于 gitlab-runner 管道以执行 cypress 测试的 Dockerfile。

FROM cypress/base:14.18.1 as dependencies
WORKDIR /app
COPY .yarn ./.yarn
COPY package.json yarn.lock tsconfig.json .yarnrc.yml jest.config.js .lighthouserc.json ./

COPY mailer/package.json ./mailer/package.json
COPY inventory/package.json ./inventory/package.json
COPY backoffice/package.json ./backoffice/package.json
COPY storefront/package.json ./storefront/package.json
COPY db/package.json ./db/package.json
COPY e2e/package.json ./e2e/package.json

RUN yarn

COPY mailer ./mailer
COPY db ./db
COPY inventory ./inventory
COPY backoffice/ ./backoffice/
COPY storefront/ ./storefront/
COPY e2e ./e2e

RUN cd mailer && yarn run tsc <-- Error seems to occur here
RUN cd db && yarn run tsc
RUN cd inventory && yarn run tsc

RUN yarn run e2e:run <-- this will actually run the application and the tests

通过RUN yarn 命令的安装过程看起来成功,但是在标记的行我得到以下错误:

#30 [27/39] RUN cd mailer && yarn run tsc
#30 sha256:73ba143f22b6fb626fd5f0e97a5716b3ce1d9a4fbc38da1c9bf5bc940ec08299
#30 16.32 Usage Error: The project in /app/package.json doesn't seem to have been installed - running an install there might help
#30 16.32 
#30 16.32 $ yarn run [--inspect] [--inspect-brk] [-T,--top-level] [-B,--binaries-only] <scriptName> ...
#30 ERROR: executor failed running [/bin/sh -c cd mailer && yarn run tsc]: exit code: 1

但该消息对我来说没有意义,因为安装命令在上一步中成功运行。

这个错误的原因可能是什么?

更新: 值得注意的是,这个错误只出现在新的 gitlab-runner 上。在旧的上,它工作正常。但我无法想象任何可能导致这种错误的 gitlab-runner 配置。新跑步者使用的所有图像都与旧跑步者相同

【问题讨论】:

  • 看起来你从来没有在RUN yarn install 安装各种package.json 文件中的包,所以容器中不会有node_modules 树。
  • (看起来您在这里安装了六个不同的应用程序;考虑将其分成六个单独的图像。)
  • @DavidMaze 哦,对不起,我的错。我不小心剪切而不是复制RUN yarn 命令。我加回来了。是的,每个组件都可以单独运行,但是由于它们位于由工作区分隔的同一个存储库中并且相互依赖以运行测试,因此将它们拆分会增加更多复杂性
  • 您是否也为每个子目录RUN cd mailer &amp;&amp; yarn?每个子目录是否也有需要复制的yarn.lock 文件?
  • @DavidMaze 通常不需要,但我试过了。这导致了相同的错误消息。我确认在容器的/app 目录中存在根级别的锁定文件

标签: docker gitlab yarnpkg


【解决方案1】:

虽然没有真正解决,但我通过切换到 yarn 的 zero installs 方法避免了这个问题。这样,yarn 就不会抱怨缺少包,因为缓存也被检入到 repo 中。然后它也应该被复制到 Docker 镜像中。

更多详情可以在这里找到:https://yarnpkg.com/features/zero-installs

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2020-04-11
    • 2017-07-12
    • 2018-02-11
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2018-03-07
    相关资源
    最近更新 更多