[英]Installing private GitHub npm package in Firebase Cloud Functions
[英]How To Setup Private NPM Module With Firebase Cloud Functions .npmrc?
我創建了一個私有類型 npm 模塊,用於我的 firebase 函數和應用程序項目。 當我去部署 firebase 函數時,每個 function 都會出現一個大錯誤,基本上是ERR: remote. Invalid username or password.
ERR: remote. Invalid username or password.
對於我所閱讀的內容,看起來我需要創建一個 .npmrc 文件並將其放在 /functions 目錄中。 ( https://cloud.google.com/functions/docs/writing/specifying-dependencies-nodejs#using_private_modules )
但是,我無法在任何地方找到有關如何執行此操作的正確說明。 根據我的發現,我做了以下事情:
然后這給了我一個看起來像這樣的令牌: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
。
然后,我在我的函數目錄中創建了一個名為 .npmrc 的文件,並將//registry.npmjs.org/:_authToken=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
放入其中。
此外,我看到錯誤消息是嘗試使用 ssh 來安裝我的私人倉庫 package,我沒有設置 ssh 而是使用 https,因此我將我的 package 文件更改為git+https://github.com/accounts-name/repo#commit-num
以便它使用 HTTPS。
但是,我仍然收到相同的錯誤消息。 我錯過了什么? 以上是我從大量谷歌搜索中串起來的。
看來您在嘗試使其工作時進行了太多不同的更改,所以讓我們逐步完成整個過程 go。
查看你的npm模塊的package.json並發布:
false
,因為 npm 中的私有模塊永遠不會發布。 這並不明顯,但確實如此。package.json
文件中添加此類屬性: "publishConfig": { "access": "restricted" },
npm
帳戶支持私有包。npm login
,然后登錄 npm。檢查您是否將正確的版本放入package.json
。npm publish
。 package 應該會在幾秒鍾內發布。 不用擔心,由於publishConfig
屬性,沒有人可以訪問它。現在是時候允許在您的項目中安裝 package
package.json
文件dependencies
項列表中是否包含 package 的名稱和版本tokens
選項卡package.json
文件所在的同一級別(這很重要!)並在那里創建.npmrc
文件。.npmrc
文件中: //registry.npmjs.org/:_authToken=TOKEN_HERE
你完成了!
使用遠程 CI/CD 服務進行部署
.npmrc
添加到.gitignore
中。 在這種情況下,文件將始終在存儲庫中,因此npm install
將在克隆項目的任何機器上順利運行NPM_TOKEN
env 變量(只是來自 npmjs 的令牌,而不是來自 .npmrc 的整個字符串!)然后按以下方式更改.npmrc
文件://registry.npmjs.org/: //registry.npmjs.org/:_authToken=${NPM_TOKEN}
。因此,通過這些步驟,您應該能夠毫無問題地安裝受限軟件包。 祝你好運!
如果您嘗試使用 firebase 從 CI 部署您的功能,您的.npmrc
文件如下所示。
@acmecorp:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=${NPM_REGISTRY_TOKEN}
即使您設置了環境變量,您也會遇到問題。
Build failed: Error: Failed to replace env in config: ${NPM_REGISTRY_TOKEN}
Firebase 出於某種原因需要訪問該私人倉庫。 但是環境變量沒有發送到 firebase。
我實施的解決方案是在 CI 管道的每次運行中替換 .npmrc 文件中的${NPM_REGISTRY_TOKEN}
。
sed -i.bak "s/\${NPM_REGISTRY_TOKEN}/${NPM_REGISTRY_TOKEN}/g" .npmrc
如果您使用 Yarn ,這會中斷。 我花了一段時間才在 firebase cli 預部署步驟中找到指向 npm 安裝的線程。 如果沒有 package-lock.json 並且你只使用紗線,這將會中斷。 刪除 yarn.lock 並使用 npm 安裝以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.