gitlab ci 为 angular 项目抛出错误

gitlab ci throwing error for angular project

我的 angular 项目 angular 的 gitlab-ci 中的 CI 最近开始出现错误

错误如下

$ npm install --unsafe-perm -g --save-dev @angular/cli@1.3.2
/usr/local/bin/ng -> /usr/local/lib/node_modules/@angular/cli/bin/ng

> node-sass@4.5.3 install /usr/local/lib/node_modules/@angular/cli/node_modules/node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.5.3/linux_musl-x64-59_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.5.3/linux_musl-x64-59_binding.node": 

HTTP error 404 Not Found

Hint: If github.com is not accessible in your location
      try setting a proxy via HTTP_PROXY, e.g. 

      export HTTP_PROXY=http://example.com:1234

or configure npm proxy via

      npm config set proxy http://example.com:8080

我知道文件 https://github.com/sass/node-sass/releases/download/v4.5.3/linux_musl-x64-59_binding.node 不存在,但我不确定为什么 node-sass 试图安装该文件的那个版本?

首先清除 npm 缓存:

npm cache clean  

然后全局安装node-sass :

npm install -g node-sass@4.5.3

然后运行你的命令:

npm install --unsafe-perm -g --save-dev @angular/cli@1.3.2

如果还是不行,尝试用yarn安装:

yarn add node-sass

然后运行你的命令

问题出在节点版本控制上。在我的 gitlab-ci 中,我使用的是最新的节点 docker 图像 (node:alpine) 并且 node:alpine 标签已从 10 月 31 日移至节点版本 9.x.x 2017. 因此,从版本 4.5.3

开始,这破坏了 node-sass 作为 node-sass only supports upto 8.X.X

我将节点 docker 图像切换为支持节点 8.X.Xnode:carbon-alpine,这解决了问题。