Gitlab CI 失败:未找到 NPM 命令

Posted

技术标签:

【中文标题】Gitlab CI 失败:未找到 NPM 命令【英文标题】:Gitlab CI Failed: NPM command not found 【发布时间】:2017-11-28 23:48:44 【问题描述】:

我一直在玩 Gitlabl CI,但由于某种原因,我无法让我的测试“通过”。它总是说npm: command not found

我的 Gitlab CI 配置如下所示:

image: node:latest
# This folder is cached between builds
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
  paths:
    - node_modules/

before_script:
  - npm install
  - npm install eslint -g
  - npm install eslint-plugin-react -g
  - npm install babel-eslint -g

test:lint:
  script:
    - eslint src/*

我不断收到以下错误,但我不知道为什么:

顺便说一句,我没有使用 gitlab 共享运行器。不确定这是否会导致问题,但只是为了确保拥有我的 gitlab 运行器的机器具有运行 nodejs 所需的所有包。

非常感谢您的帮助

最好的问候,

【问题讨论】:

一个天真的问题,但是你的 gitlab 运行器上安装了 node.js 吗? 你能弄清楚gitlab runner在哪个操作系统帐户下执行测试吗?之后,您可以尝试登录该帐户并验证 npm 是否可用。 @vsenko 是的——正如我提到的,有我的 gitlab 运行器的机器拥有运行 nodejs 的一切。这意味着我已经安装了 nodejs。谢谢f @vsenko 它在 root 帐户下。在我的 runner.ssh 上,我将用户指定为 root,是的,它也安装了 nodejs。 可能npm不在root用户的PATH中? 【参考方案1】:

image 标签指定了一个 docker 镜像,因此您必须将 runner 的执行者指定为docker。您在创建跑步者时是否将其设置为其他内容,例如 shell

【讨论】:

就我而言,我使用的是 ssh 而不是 docker。【参考方案2】:

我也有同样的问题。

Gitlab-runner 启动时默认使用“gitlab-runner”用户。所以用户没有root权限。

ps aux|grep gitlab-runner

    复制运行的shell

    更改用户: 在 bash 中运行 /usr/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user root

    gitlab-ci 运行器测试

    通过!

    杀死旧的pid

    nohup /usr/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user root

ps:gitlab-runner -u root也换了用户。

【讨论】:

【参考方案3】:

你可以像下面这样使用:-

stages:
          - build
          - deploy

deploy-prod:
          image: node:12.13.0-alpine
          stage: deploy
          script:
            - npm i -g firebase-tools

【讨论】:

【参考方案4】:

这对我有帮助:

n=$(which node);n=$n%/bin/node; chmod -R 755 $n/bin/*; sudo cp -r $n/bin,lib,share /usr/local

【讨论】:

【参考方案5】:

您的 cli 默认使用 ssh 执行器。你可能需要码头工人。尝试在你的 yml 脚本中添加标签。

 tags: [ <your docker image name> ]

【讨论】:

以上是关于Gitlab CI 失败:未找到 NPM 命令的主要内容,如果未能解决你的问题,请参考以下文章

命令“npm start”中的问题在第四个 tic-tac-toe@0.1.0 启动脚本中失败。 npm 错误!反应脚本:未找到

由于 webdriver-manager 未被识别为内部或外部命令,Gitlab CI 端到端测试失败

利用gitlab CI做到npm 包push 后直接发布,自动登陆

Gitlab CI/CD 运行器:找不到 mvn 命令

在 gitlab ci 脚本功能失败时掩码退出 1

.gitlab-ci.yml 管道中的 Plotly-Dash 测试因 NameError 失败:未定义名称“DashComposite”