釋出npm包時遇到的一些坑
阿新 • • 發佈:2022-04-20
原文連結 連結: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 newpackage: 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 inas 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