1. 程式人生 > 其它 >釋出npm包時遇到的一些坑

釋出npm包時遇到的一些坑

原文連結 連結:https://www.jianshu.com/p/40f732d91a8c

基本流程

先簡單記錄一下發布流程

初始化包

npm init

登入npm

npm login

釋出包

npm publish

問題

接下來就是遇到的問題了,每個問題都包含報錯資訊,請善用ctrl + f搜尋,下文報錯中涉及到自己包名的我都替換為了your-package

郵箱未驗證

npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! you must verify your email before publishing a new
package: https://www.npmjs.com/email-edit : your-package

這個是註冊後沒有驗證郵箱,登入自己郵箱找到對應的郵件確認就好了。注意別選錯了,註冊 npm 時會發給你兩個郵件,我當時就是眼瞎沒有看到第二個。如果驗證郵件過期的話登入自己的 npm 主頁重新發一個就好了。

驗證郵件

沒有許可權釋出

npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! You do not have permission to publish "your-package". Are you logged in
as the correct user? : your-package

你的包和別人的包重名了,npm 裡的包不允許重名,所以去 npm 搜一下,改個沒人用的名字就可以了。

需要登入

npm ERR! code ENEEDAUTH
npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

後面已經註明了,輸入npm adduser重新登入就可以了,過程和npm login一樣,這個問題在你切換了 npm 源之後或登入過期後都有可能發生。

只有管理員才有許可權釋出

npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! [no_perms] Private mode enable, only admin can publish this module [no_perms] Private mode enable, only admin can publish this module: your-package

這個是你的源設定成第三方源的時候才有可能發生,比如設定了淘寶源就可能會導致該問題。只要把源改回預設的就可以了,如下:

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

包名過於類似

npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! Package name too similar to existing packages; try renaming your package to '@hopgoldy/auto-git' and publishing with 'npm publish --access=public' instead : your-package

如果npm上已經有了不少和你的包名類似的包,就會出現這個問題,在package.json中修改你的包名就可以了

無法釋出到私有包

npm ERR! publish Failed PUT 402
npm ERR! code E402
npm ERR! You must sign up for private packages :

這個當你的包名為@your-name/your-package時才會出現,原因是當包名以@your-name開頭時,npm publish會預設釋出為私有包,但是 npm 的私有包需要付費,所以需要新增如下引數進行釋出:

npm publish --access public