# 问题集--淘宝镜像源SSL过期
xxx@MacBook-Pro xfg-dev-tech-blog-master % yarn
yarn install v1.22.17
info No lockfile found.
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] 🔍 Resolving packages...
error An unexpected error occurred: "https://registry.npm.taobao.org/@vuepress%2fclient: certificate has expired".
info If you think this is a bug, please open a bug report with the information provided in "/Volumes/zs-2T/zs-study/zs-project/xfg-dev-tech-blog-master/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
yarn-error.log
Trace:
Error: certificate has expired
at TLSSocket.onConnectSecure (node:_tls_wrap:1539:34)
at TLSSocket.emit (node:events:513:28)
at TLSSocket._finishInit (node:_tls_wrap:953:8)
at TLSWrap.ssl.onhandshakedone (node:_tls_wrap:734:12)
痕迹:
错误:证书已过期
在 TLSSocket.onConnectSecure (节点:_tls_wrap:1539:34)
在 TLSSocket.emit (节点:事件:513:28)
在 TLSSocket._finishInit (节点:_tls_wrap:953:8)
在 TLSWrap.ssl.onhandshakedone (节点:_tls_wrap:734:12)
# 解决方式
npm config set strict-ssl false
yarn config set "strict-ssl" false -g
# config信息
xxx@MacBook-Pro xfg-dev-tech-blog-master % npm config list
; "global" config from /Users/miyufeng/.nvm/versions/node/v16.20.2/etc/npmrc
; registry = "https://registry.npmmirror.com/" ; overridden by user
strict-ssl = true
; "user" config from /Users/miyufeng/.npmrc
chromedriver_cdnurl = "https://npm.taobao.org/mirrors/chromedriver"
CHROMEDRIVER_CDNURL = "https://npm.taobao.org/mirrors/chromedriver"
ELECTRON_BUILDER_BINARIES_MIRROR = "https://npm.taobao.org/mirrors/electron-builder-binaries/"
ELECTRON_MIRROR = "https://npm.taobao.org/mirrors/electron/"
global = true
NVM_NODEJS_ORG_MIRROR = "https://npm.taobao.org/mirrors/node"
OPERADRIVER = "https://npm.taobao.org/mirrors/operadriver"
phantomjs_cdnurl = "https://npm.taobao.org/dist/phantomjs"
PYTHON_MIRROR = "https://npm.taobao.org/mirrors/python"
registry = "https://registry.npm.taobao.org/"
sass_binary_site = "https://npm.taobao.org/mirrors/node-sass"
; node bin location = /Users/miyufeng/.nvm/versions/node/v16.20.2/bin/node
; node version = v16.20.2
; npm local prefix = /Volumes/zs-2T/zs-study/zs-project/xfg-dev-tech-blog-master
; npm version = 8.19.4
; cwd = /Volumes/zs-2T/zs-study/zs-project/xfg-dev-tech-blog-master
; HOME = /Users/miyufeng
; Run `npm config ls -l` to show all defaults.
xxx@MacBook-Pro xfg-dev-tech-blog-master % yarn config list
yarn config v1.22.17
info yarn config
{
'version-tag-prefix': 'v',
'version-git-tag': true,
'version-commit-hooks': true,
'version-git-sign': false,
'version-git-message': 'v%s',
'init-version': '1.0.0',
'init-license': 'MIT',
'save-prefix': '^',
'bin-links': true,
'ignore-scripts': false,
'ignore-optional': false,
registry: 'https://registry.npmmirror.com',
'strict-ssl': true,
'user-agent': 'yarn/1.22.17 npm/? node/v16.20.2 darwin x64',
'ignore-engines': true,
lastUpdateCheck: 1706663282683
}
info npm config
{
'strict-ssl': true,
registry: 'https://registry.npm.taobao.org/',
phantomjs_cdnurl: 'https://npm.taobao.org/dist/phantomjs',
chromedriver_cdnurl: 'https://npm.taobao.org/mirrors/chromedriver',
sass_binary_site: 'https://npm.taobao.org/mirrors/node-sass',
ELECTRON_MIRROR: 'https://npm.taobao.org/mirrors/electron/',
NVM_NODEJS_ORG_MIRROR: 'https://npm.taobao.org/mirrors/node',
CHROMEDRIVER_CDNURL: 'https://npm.taobao.org/mirrors/chromedriver',
OPERADRIVER: 'https://npm.taobao.org/mirrors/operadriver',
ELECTRON_BUILDER_BINARIES_MIRROR: 'https://npm.taobao.org/mirrors/electron-builder-binaries/',
PYTHON_MIRROR: 'https://npm.taobao.org/mirrors/python',
global: '='
}
✨ Done in 0.37s.
# 关闭strict-ssl
npm config set strict-ssl false
yarn config set "strict-ssl" false
xxx@MacBook-Pro xfg-dev-tech-blog-master % yarn config list
yarn config v1.22.17
info yarn config
{
...
'strict-ssl': false,
...
}
info npm config
{
'strict-ssl': false,
...
}
# 直接修改配置文件
/Users/用户名/.yarnrc
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
registry "https://registry.npmmirror.com"
ignore-engines true
lastUpdateCheck 1706663282683
strict-ssl false
/Users/miyufeng/.npmrc
registry=https://registry.npm.taobao.org/
phantomjs_cdnurl=https://npm.taobao.org/dist/phantomjs
chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
sass_binary_site=https://npm.taobao.org/mirrors/node-sass
ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
CHROMEDRIVER_CDNURL=https://npm.taobao.org/mirrors/chromedriver
OPERADRIVER=https://npm.taobao.org/mirrors/operadriver
ELECTRON_BUILDER_BINARIES_MIRROR=https://npm.taobao.org/mirrors/electron-builder-binaries/
PYTHON_MIRROR=https://npm.taobao.org/mirrors/python
global="="
# .npmrc
# .npmrc配置文件的优先级
.npmrc
可以理解成npm running cnfiguration
,即npm
运行时配置文件。
.npmrc
可以设置package.json
中依赖包的安装来源,即从哪里下载依赖包。
一般情况下,我们的电脑中有多个.npmrc
文件,我们在安装包时,npm
按照如下顺序读取这些配置文件:
项目配置文件:
/project/.npmrc
用户配置文件:
~/.npmrc
我们可以通过如下命令,来获取
.npmrc用户配置文件
路径: 如果想恢复默认配置,只需要将用户配置文件~/.npmrc
删除即可。全局配置文件:
$PREFIX/etc/npmrc
我们可以通过如下命令,来获取.npmrc 全局配置文件
路径$PREFIX
:npm config get prefix
【注意】如果你不曾配置过全局文件,该文件不存在。
npm
内置配置文件/path/to/npm/npmrc
我们可以通过如下命令,获取
npmrc
在npm
的路径:which npm
与
npm
同级别, 使用which npm
获取npm
的路径。
# .npmrc设置的命令行
在讲解如何设置.npmrc
之前,我们需要了解设置文件的命令行。
我们一般使用key-value
的方式来设置文件,如下所示:
npm config set key value
例如,设置仓库信息,可以使用下述命令行:
npm config set registry https://repo.huaweicloud.com/repository/npm/
# 如何设置.npmrc
设置项目配置文件
项目下
.npmrc
文件的优先级最高,可以给每个项目配置不同的镜像,项目之间的配置互不影响。在项目的根目录下新建
.npmrc
文件,在里面以key=value
的格式进行配置。registry=https://registry.npm.taobao.org
也可以指定特殊的命名空间
(scope)
的来源。比如,以
@testNpmRc
开头的包从registry=https://npm.xx.com
这里下载,其余全去淘宝镜像下载。registry=https://registry.npm.taobao.org/ @testNpmRc:registry = https://npm.xx.com
设置用户配置文件
可以直接通过如下命令:
npm config get userconfig
找到用户配置文件的路径,直接仿照上述方法修改该文件。
当然,也可以通过
npm config set
命令继续设置,如下所示:npm config set registry https://registry.npm.taobao.org
如果想要删除一些配置,可以直接编辑
.npmrc
文件,也可以使用命令进行删除,例如:npm config delete registry
设置全局配置文件
方法同设置用户配置文件一样,只不过在使用命令行时需要加上
-g
参数,如下所示:npm config set registry https://registry.npm.taobao.org -g
给
npm
命令添加注册源选项比如,临时使用淘宝镜像,如下所示:
npm --registry=https://registry.npm.taobao.org [npm命令]
又比如,使用
npm
安装依赖包,如下所示:npm install --registry https://registry.npmjs.org
但不推荐用这种做法,更推荐设置项目配置文件
.npmrc
。
# 配置发布组件
npm
配置组件发布的方式有如下两种:
- 通过配置
packege.json
实现 - 通过配置文件
.npmrc
实现
package.json
配置方式# @aa是组件的scope。 # scope在模块名name中使用时,以@开头,后边跟一个/ { "name": "@aa/xxx", // 发布npm包的名字 "version": "1.0.0", // 你的npm包版本 "description": "xxxx", // 包的描述 "main": "dist/btn.js", // 指定组件的主入口文件 "publishConfig": { "registry": "要发布的私有仓库地址,然后在.npmrc配置用户名密码" } ...... }
.npmrc
配置方式# package.json不做任何仓库的配置: { "name": "@aa/xxx", // 发布npm包的名字 "version": "1.0.0", // 你的npm包版本 "description": "xxxx", // 包的描述 "main": "dist/btn.js", // 指定组件的主入口文件 ...... } # .npmrc配置仓库地址和用户名密码: @aa:registry=私仓地址
配置好仓库信息后,执行如下发布命令,即可将打包好的组件发布到仓库中:
npm publish
# npm常用命令
npm config set <key> <value> [-g|--global] //给配置参数key设置值为value;
npm config get <key> //获取配置参数key的值;
npm config delete <key> [-g|--global] //删除置参数key及其值;
npm config list [-l] //显示npm的所有配置参数的信息;
npm config edit //编辑用户配置文件
npm get <key> //获取配置参数 key 生效的值;
npm set <key> <value> [-g|--global] //给配置参数key设置值为value;
# 重要备注
# yarn
yarn
会读取.npmrc
的配置文件,所以不必为yarn
再设置一次。
# scope命名空间
上文提到的指定特殊的命名空间(scope)
的来源,如下代码所示:
@aa:registry=https://repo.huaweicloud.com/repository/npm/
其中,@aa
是组件的scope
,scope
在模块名name
中使用时,以@
开头,比如:
# 在package.json的dependencies标签中加上即可使用。
"dependencies": {
"@test/mypackage": "^1.3.0"
}
# 镜像出错
.npmrc
文件配置了私有包registry
源,但是当前的下载源是淘宝镜像,可能会报如下错误:
error Command failed with exit code 1
可以将当前的下载源改成私有包registry
源,如果改了之后还报错,可以尝试将lock
文件,或者node_modules
文件删掉,重新开始下载。