文章目录
  1. 1. nexus代理npm私服问题记录
    1. 1.0.1. 权限码生成方式:

nexus代理npm私服问题记录

因公司要求所有项目的代码依赖必须走公司内网的私服,编译构建必须在jenkins上进行,而jenkins上的编译机器是不通外网的,而需要走nexus的代理服务器,开通了什么代理,就找安全部门将相关地址开通外网访问白名单。

先列出我遇到的一系列问题:

  1. nexues镜像地址外网不通问题
  2. nodejs项目构建时未指定新的仓库地址
  3. node_sass依赖构件无法从代理镜像下载问题
  4. node_sass代理镜像配置问题
  5. node_sass代理地址权限问题
  6. nexus代理镜像请求转发cdn问题

解决方案:

  1. 写邮件向安全审批并找sre开通外网白名单
  2. 需要在.npmrc文件中设置:
registry=http://xx.com/repository/npm-public/
sass-binary-site=http://xx.com/repository/npm-sass
_auth="YWRtaW46MmNMamtUd2ZuZnVqUmc3Zw=="

或者在执行代码编译时,加入如下代码:

npm set registry http://xx.com/repository/npm-public

npm config set registry "http://xx.com/repository/npm-public/"
npm config set proxy ""
npm config set sass-binary-site="http://xx.com/repository/npm-sass"

注意,使用第二种方式也必须在.npmrc文件中将_auth加上,否则会导致node_sass无法下载

  1. node_sass依赖构件无法从代理镜像下载问题(3和6本质上是一个问题)

总是出现如下报错:

> node-sass@4.14.1 install /home/jenkins/workspace/xx-hzh5/hzh5-ptalb-build/v4/node_modules/node-sass
> node scripts/install.js

Downloading binary from http://xx.com/repository/npm-sass-node/v4.14.1/linux-x64-64_binding.node
Cannot download "http://xx.com/repository/npm-sass/v4.14.1/linux-x64-64_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

> core-js@2.6.11 postinstall /home/jenkins/workspace/xx-hzh5/hzh5-ptalb-build/v4/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"


> javascript-obfuscator@1.9.0 postinstall /home/jenkins/workspace/xx-hzh5/hzh5-ptalb-build/v4/node_modules/javascript-obfuscator
> opencollective || exit 0

                   Thanks for installing javascript-obfuscator 
                 Please consider donating to our open collective
                        to help us maintain this package.
                                         
                                         
          Donate: https://opencollective.com/javascript-obfuscator/donate
                                         

> node-sass@4.14.1 postinstall /home/jenkins/workspace/xx-hzh5/hzh5-ptalb-build/v4/node_modules/node-sass
> node scripts/build.js

这个地方搞了我很久,差不多搞了我一天,后面还尝试手动上传包到nexus,但是也失败了,好像后台报什么id不存在,貌似是无法手动上传,最终还是往镜像下载的方向去看,最后看了nexues后台报错日志:

image-20200812111656669

这个就是6的问题。

没办法,只能向安全部门申请外网访问白名单。

端口开通以后,再试一遍,终于构建成功了:

image-20200812112342546

到nexus上看看包下载下来没有:

image-20200812111853259

很明显,已经下载到库里了。

  1. 代理镜像配置问题,是个小坑

我代理的是github的npm第三方库,用的是taobao的镜像作代理,地址是:https://npm.taobao.org/mirrors/node-sass/

我厂用的nexus版本是:OSS 3.22.1-02

配置的node_sass的代理文件类型必须raw:

image-20200812112901514

proxy地址必须是:https://npm.taobao.org/mirrors/node-sass

image-20200812112940989

  1. node_sass代理地址权限问题,npm install 的时候返回如下:

image-20200812135309568

在npm install 之前,还必须将_auth的权限码放到.npmrc文件中。

权限码生成方式:

echo -n 'myuser:mypassword' | openssl base64

或者使用命令:npm addUser

这种方式虽然简单,但是可能会暴露密码,如果你不想把密码给编译团队,就给权限码就行了。

参考地址1

参考地址2

参考地址3

参考地址4

参考地址5

文章目录
  1. 1. nexus代理npm私服问题记录
    1. 1.0.1. 权限码生成方式: