我创建了一个私有(private)的 typings npm 模块,用于我的 firebase 函数和应用程序项目。当我去部署 firebase 函数时,每个基本上说 ERR! remote: Invalid username or password.
的函数都会出现一个大错误
根据我的阅读,我似乎需要创建一个 .npmrc 文件并将其放在/functions 目录中。 ( https://cloud.google.com/functions/docs/writing/specifying-dependencies-nodejs#using_private_modules )
但是,我无法在任何地方找到有关如何执行此操作的正确说明。根据我的发现,我做了以下事情:
- 运行 npm 登录
- 运行 npm token create --read-only
然后这给了我一个看起来像这样的 token :XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
.
然后,我在我的函数目录中创建了一个名为 .npmrc 的文件,并放置了 //registry.npmjs.org/:_authToken=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
此外,我看到错误消息是尝试使用 ssh 安装我的私有(private)仓库包,我没有设置 ssh 而是使用 https,因此我将我的包文件更改为 git+https://github.com/accounts-name/repo#commit-num
以便它使用 HTTPS。
但是,我仍然收到相同的错误消息。我错过了什么?以上是我从大量谷歌搜索中串起来的。
最佳答案
看来您在尝试使其工作时进行了太多不同的更改,所以让我们逐步完成整个过程。
检查 npm 模块的 package.json 并发布它:
- 删除“private”属性或将其设置为
false
,因为 npm 中的私有(private)模块永远不会发布。这并不明显,但确实如此。 - 下一步是对包应用限制访问。为此,添加这样的 property在
package.json
文件中:
"publishConfig": { "access": "restricted" },
- 确保用于发布的
npm
帐户 supports私有(private)包裹。 - 现在在包的根目录中打开终端,键入
npm login
然后登录到 npm。检查您是否将正确的版本放入package.json
。 - 运行
npm publish
。该包应在几秒钟内发布。不用担心,感谢publishConfig
属性,没有人可以访问它。
- 删除“private”属性或将其设置为
现在是时候在您的项目中安装包了
- 进入项目目录,打开
package.json
文件 - 检查
dependencies
列表中是否有包的名称和版本 - 打开浏览器,导航到 https://npmjs.com , 登录到您的帐户,导航到您帐户的设置页面并打开
tokens
选项卡 - 创建新 token 并复制
- 现在再次转到您的项目目录,与
package.json
文件所在的同一级别(这很重要!)并在那里创建.npmrc
文件。 - 将这样的字符串放入
.npmrc
文件中:
//registry.npmjs.org/:_authToken=TOKEN_HERE
大功告成!
- 进入项目目录,打开
使用远程 CI/CD 服务进行部署
- 最简单的方法是不将
.npmrc
添加到.gitignore
中。在这种情况下,文件将始终在存储库中,因此npm install
将在克隆项目的任何机器上顺利运行 - 如果您不想在存储库中包含 token 字符串,您可以将其移动到 CI/CD 服务的环境变量中,然后将 .npmrc 文件链接到该变量。例如,您可以将生成的 token 放入
NPM_TOKEN
环境变量中(只是来自 npmjs 的 token ,而不是来自 .npmrc 的整个字符串!) 然后按以下方式更改.npmrc
文件://registry.npmjs.org/:_authToken=${NPM_TOKEN}
。
- 最简单的方法是不将
因此,通过这些步骤,您应该能够毫无问题地安装受限软件包。祝你好运!
关于node.js - 如何使用 Firebase Cloud Functions .npmrc 设置私有(private) NPM 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58216520/