發布npm包時遇到的一些坑

我感覺發布過程中的坑讓我踩的差不多了...在這里記錄一下

基本流程

先簡單記錄一下發布流程

初始化包

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容