npm发布过程中遇到问题E426,E402,install报错-4058

334 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天, 点击查看活动详情

1.npm publish 报错 E426

npm ERR! code E426
npm ERR! 426 Upgrade Required - PUT http://registry.npmjs.org/vue-transfer-three
npm ERR! A complete log of this run can be found in:

主要是因为npm源设置的是http开头,如下图

image.png 所以需要重新设置npm源(要https开头!!!),换了之后就能成功发布

解决方法:

    npm config set registry https://registry.npmjs.org/

2.npm publish 报错 E402 我遇到这个问题是因为package.js中的name命名成这个格式 @name/包名,这样子即使package.js中的private设置成false也会默认为私有包,但是私有包要给钱,所以只要后缀加上--access public即可

Error: 402 Payment Required - PUT registry.npmjs.org/@xx/xx - You must sign up for private packages

解决方法:

    npm publish --access public

3.发布成功后,install报错-4058,而且在淘宝镜像npm管理包网站都能找到该插件

执行npm install XXX (这个是在npm发布之后所在包的页面的右边自动生成的语句)

npm WARN tarball tarball data for 包名@file:包名-0.0.1.tgz (null) seems to be corrupted. Trying again.   
npm WARN tarball tarball data for 包名@file:包名-0.0.1.tgz (null) seems to be corrupted. Trying again.
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path F:\project\new\my-test\node_modules\包名\包名-0.0.1.tgz
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, open 'F:\project\new\my-test\node_modules\包名\包名-0.0.1.tgz'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:

网上找到的都是执行以下代码【但对我无效】:

// 清除缓存 
npm cache clean --force

// 删除package-lock.json文件,之后再install

无语无语无语 记录一下我这弱智的错误,我试过好几次install 我新发布到npm上的包,都提示找不到的XX.tgz,之后发现是因为我npm pack之后,因为想要测试这个组件是否能用,所以我执行完pack之后install了我的组件,然后我package设置file(npm发布包含的文件)没有我那个install的包,但是我的package.json中依赖我npm pack之后的包依赖,之后我直接publish上去npm,导致install一直报错一直报错,最终就是检查package.json有没有奇奇怪怪的依赖(这里是因为我多了测试install,所以package.json的依赖项有相关【估计很少人犯类似我这样子的错误了

image.png

删除上面我圈住的那一行,再次发布,接着在另外一个项目install,如下图,成功安装,至此,npm发布到npm,从npm上install,并成功引用!!!

image.png