Appearance
问题收集
一、nvm 问题
1 - mac 使用nvm 切换node版本失败或者 nvm install &nvm ls-remote N/A问题
现象:
sh
# 输入
$nvm install v16.18.0
# 输出结果
Version '16.18.0' not found try nvm is-remote to browse available versions.
# 输入
$nvm ls-remote
# 输出结果
N/A
原因分析:
sh
# 镜像包获取不到(镜像地址访问受限)
解决方案:
sh
# 1.打开环境变量配置文件.bash_profile或.zshrc
$vim ~/.bash_profile
# 2.加入或更改配置NVM_NODEJS_ORG_MIRROR环境变量命令
export NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist
# 3.保存文件
# 4.命令执行使文件生效
$source ~/.bash_profile
# 5.检查配置是否生效 - 输出node多版本则表示配置成功
$nvm ls-remote
二、npm 问题
1 - 执行npm命令一直出现sill idealTree buildDeps怎么办?
解决方案:
- 删除.npmrc文件,用如下命令找到存放位置
sh
$npm config get userconfig
- 删除后使用下面命令清除缓存
sh
$npm cache verify
- 之后,设置镜像源,淘宝的https://registry.npm.taobao.org已经凉了
sh
$npm config set registry https://registry.npmmirror.com
- 查看一下,看看换没换成功
sh
$npm config get registry
- 最后重新执行
npm install --legacy-peer-deps
命令
三、npm 发布包遇到的问题
1 - 403 Forbidden
现象:
Error: 403 Forbidden - PUT https://registry.npmjs.org/xx - You do not have permission to publish "xx". Are you logged in as the correct user?
查询资料后,发现了这个 issue,原来是因为公开的库里面,已经有了同名的库。由于是免费的账号,所以想在 npm 上发包,要么换个名称,要么花钱创建私有包。还有一种方式就是在内网搭建自己的服务。
2 - Error: 402 Payment Required
换了个名字,想起了自己见过的库,就模仿加了个 @ 前缀的包,再次发布的时候,报了下面的错误:
Error: 402 Payment Required - PUT https://registry.npmjs.org/@x... - You must sign up for private packages
查看文档,发现 @npm/package-name 这种形式的包名,是有作用域的包名形式,执行 npm publish 的时候默认是发布私有的包。因此,第一种方式是花钱买私有包的服务,另外一种方式就是指定参数,表示公开:
npm publish --access public
需要注意的是这种形式的包名跟 npm 账户有对应关系,不能随便填写。
npm init --scope=@my-org
这种形式表示是一个组织,my-org 对应是 npm 中的组织名。
npm init --scope=@my-username
这种形式表示是个人,my-username
对应是 npm 中的用户名。
3 - 对旧包的处理
在尝试的过程中,发布了一些包,想着只是测试的包,想要移除掉,但 npm 官方很不推荐这种做法,推荐用 npm deprecate
指令,告知安装者相关信息,例如“我不再维护这个库了,请不要使用”。
npm deprecate package-name "This is test package, do not use it!"
其中 package-name
是指发布的包的名称,可能跟库的名称不一样。
4 - npm上传verdaccio报错:error: one of the uplinks is down, refuse to publish
问题场景 verdaccio搭建本地npm私库后,上传包到私库报错: http <-- 503, user: xx, req: ‘PUT /helloworld’, error: one of the uplinks is down, refuse to publish
解决办法 在verdaccio启动的配置文件config.yaml加上配置:
publish: allow_offline: true
重启verdaccio后再publish,刷新页面,上传成功