一、问题产生的场景描述
在项目中需要引入一个私有库包,拿到的文档为
npm config set @syk:registry 私有库包地址
npm install @syk/demo@latest -S
二、产生的问题及解决方案
按照文档安装时报错
1、问题1:'@syk/demo is not in the npm registry.
npm ERR! code E404
npm ERR! 404 Not Found - GET 私有库包地址@syk%2fdemo - Not found
npm ERR! 404
npm ERR! 404 '@syk/demo' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\***\***\***\_logs\2021-05-07T04_03_44_364Z-debug.log
解决方案:
①、查看库包的版本信息,确认是否可以检测到
npm view @syk/demo versions --registry=私有库包地址
②、带上库包地址进行安装
npm install @syk/demo --registry=私有库包地址 -S
2、问题2:Failed at the @syk/demo postinstall script.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @syk/demo postinstall: `npm run hide-ui-module`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @syk/demo postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\***\***\***\_logs\2021-05-07T08_41_37_329Z-debug.log
解决方案:配置.npmrc文件
为了不影响所有包的安装,如果只是为了某些包需要从私有源安装,可以单独配置该 scope 走私有源,其他包走正常的源安装。例如,我封装了一个私有组件@syk/demo,那项目重新创建配置文件.npmrc:
@syk:registry=<registry url>
不同的源的配置通过配置文件来设置,跟随项目,将变更依赖收敛到了项目中,不依赖全局的配置,同时也不影响其他项目,甚至能为不同的 scope 指定不同的 registry,达到多个 registry 同时工作的目的。
3、问题3:'exec-ignore-errors' 不是内部或外部命令,也不是可运行的程序
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @syk/demo postinstall: `npm run hide-ui-module`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @syk/demo postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\***\***\***\_logs\2021-05-07T08_32_45_105Z-debug.log
解决方案:在install 后添加ignore-scripts(因为生产环境也要使用,所以使用的是--save,视情况而定,使用--save还是--save-dev)
npm install @syk/demo --registry=<registry url> --save --ignore-scripts
三、建议
①、安装私有库包的时候建议先配置.npmrc文件
②、中间出现异常,可以把node_modules包清理后,重新安装尝试