npm 发布组件时遇到的一些常见报错,这里记录一下,方便查找解决方法:
一、npm publish 发布时错误:
1. verbose stack Error: EISDIR: illegal operation on a directory, read...
错误分析:
EISDIR代表“错误,是目录“这意味着npm试图对文件做一些事情,但它是目录。在你的例子中,国家预防机制试图“读“一个文件,它是一个目录(第4行)。由于操作无法完成,因此将引发错误。
这里有三件事要确定:
- 确保文件存在。如果没有,则需要创建它。(如果NPM依赖于文件中的任何特定信息,则需要在文件中提供该信息)。
- 确保它实际上是一个文件,而不是目录。
- 它有正确的权限。您可以使用“sudo chmod 777文件”更改该文件具有所有权限。
解决方法:
我这里检查发现.gitignore文件是文件夹的形式,应该是文件的形式存在,改成文件就可以了。
2.http fetch PUT 401 http://registry.npmjs.org/react-native-hh-button-view801ms
19 verbose stack Error: 401 Unauthorized - PUT http://registry.npmjs.org/react-native-hh-button-view- You must be logged in to publish packages.
解决方法:
查看npm 的登录状态:npm whoami,登录失效时,重新登录:npm login
3.verbose stack Error: 403 Forbidden - PUT http://registry.npmjs.org/react-native-hh-button-view- You cannot publish over the previously published versions: 1.0.0.
解决方法:
组件版本已存在,更新版本,重新npm publish
4.http fetch PUT 403 https://registry.npm.taobao.org/react-native-hh-button-view547ms
19 verbose stack Error: 403 Forbidden - PUT https://registry.npm.taobao.org/react-native-hh-button-view- no_perms
错误分析:
当前的registry 是taobao镜像,需要改为npmjs
解决方法:
需要切回到npmjs源,输入以下命令:
$ npm config set registry http://registry.npmjs.org/
5.403 Forbidden - PUT http://registry.npmjs.org/react-native-app-info - You do not have permission to publish "react-native-app-info". Are you logged in as the correct user?
错误分析:
如果你想发布组件react-native-app-info,而react-native-app-info恰恰已经被别人发不过,这里会提示你发布失败,检测账户是否登录或账户是否匹配
解决方法:
这是一个杯具,所以我们在开发组件前,最好去确认名字是否已经被占用`
6. npm publish 提示成功后,再使用npm install xxx@new_version 仍然安装不了最新包的问题
错误分析:
发布新版本后,去npm包管理网站查看,确实已经成功,但是本地install就是无法获取最新版本,经分析由于我install时用的是淘宝源,也就是http://registry.npm.taobao.org
(去package-lock.json文件中查看可知)。原因就在这里:对应的新版本在淘宝镜像里面找不到,也就是淘宝镜像没有同步成功,目前还不知道出现问题的原因。
解决方法:
安装此依赖时,临时切换为npm官方源吧(https://registry.npmjs.org
),重新install即可