nexus代理npm私服问题记录
nexus代理npm私服问题记录
因公司要求所有项目的代码依赖必须走公司内网的私服,编译构建必须在jenkins上进行,而jenkins上的编译机器是不通外网的,而需要走nexus的代理服务器,开通了什么代理,就找安全部门将相关地址开通外网访问白名单。
先列出我遇到的一系列问题:
- nexues镜像地址外网不通问题
- nodejs项目构建时未指定新的仓库地址
- node_sass依赖构件无法从代理镜像下载问题
- node_sass代理镜像配置问题
- node_sass代理地址权限问题
- nexus代理镜像请求转发cdn问题
解决方案:
- 写邮件向安全审批并找sre开通外网白名单
- 需要在.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无法下载
- 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后台报错日志:
这个就是6的问题。
没办法,只能向安全部门申请外网访问白名单。
端口开通以后,再试一遍,终于构建成功了:
到nexus上看看包下载下来没有:
很明显,已经下载到库里了。
- 代理镜像配置问题,是个小坑
我代理的是github的npm第三方库,用的是taobao的镜像作代理,地址是:https://npm.taobao.org/mirrors/node-sass/
我厂用的nexus版本是:OSS 3.22.1-02
配置的node_sass的代理文件类型必须raw:
proxy地址必须是:https://npm.taobao.org/mirrors/node-sass
- node_sass代理地址权限问题,npm install 的时候返回如下:
在npm install 之前,还必须将_auth的权限码放到.npmrc文件中。
权限码生成方式:
echo -n 'myuser:mypassword' | openssl base64
或者使用命令:npm addUser
这种方式虽然简单,但是可能会暴露密码,如果你不想把密码给编译团队,就给权限码就行了。