Skip to content

问题收集

一、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
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 是指发布的包的名称,可能跟库的名称不一样。

问题场景 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,刷新页面,上传成功

创作不易请尊重他人劳动成果,未经授权禁止转载!
Released under the MIT License.