我创建了一个私有类型 npm 模块,用于我的 firebase 函数和应用程序项目。当我去部署 firebase 函数时,每个函数都会出现一个大错误,基本上说ERR! remote: Invalid username or password.
根据我所读到的内容,我似乎需要创建一个 .npmrc 文件并将其放在 /functions 目录中。 (https://cloud.google.com/functions/docs/writing/specifying-dependency-nodejs#using_private_modules https://cloud.google.com/functions/docs/writing/specifying-dependencies-nodejs#using_private_modules)
然而,我无法在任何地方找到有关如何执行此操作的正确说明。根据我的发现,我做了以下工作:
- 运行 npm 登录
- 运行 npm token create --read-only
然后这给了我一个如下所示的令牌:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
.
然后,我在函数目录中创建一个名为 .npmrc 的文件,并将//registry.npmjs.org/:_authToken=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
in it.
另外,我看到错误消息试图使用 ssh 来安装我的私有仓库包,我还没有设置 ssh 并使用 https 代替,因此我将包文件更改为git+https://github.com/accounts-name/repo#commit-num
以便它使用 HTTPS。
但是,我仍然收到相同的错误消息。我缺少什么?以上是我通过大量谷歌搜索整理出来的。
看来您在尝试使其发挥作用时做了太多不同的更改,因此让我们逐步完成整个过程。
-
检查 npm 模块的 package.json 并发布它:
- 删除“私有”属性或将其设置为
false
因为 npm 中的私有模块永远不会被发布。这并不明显,但确实如此。
- 下一步是对包应用限制访问。为此,请添加这样的property https://docs.npmjs.com/files/package.json#publishconfig in the
package.json
file:
"publishConfig": {
"access": "restricted"
},
- 确保
npm
您用于发布的帐户supports https://www.npmjs.com/products私人套餐。
- 现在打开包根目录中的终端,输入
npm login
然后登录 npm。检查您是否将正确的版本放入package.json
.
- Run
npm publish
。该包应该会在几秒钟内发布。不用担心,感谢publishConfig
任何人都无法访问它的财产。
-
现在是时候允许在您的项目中安装包了
- 进入项目目录并打开
package.json
file
- 检查您的包的名称和版本是否在
dependencies
list
- 打开浏览器,导航至https://npmjs.com https://npmjs.com,登录您的帐户,导航至您帐户的设置页面并打开
tokens
tab
- 创建新令牌并复制它
- 现在再次转到您的项目目录,位于同一级别
package.json
文件位于(这很重要!)并创建.npmrc
文件在那里。
- 将这样的字符串放入
.npmrc
file:
//registry.npmjs.org/:_authToken=TOKEN_HERE
你完成了!
-
使用远程 CI/CD 服务进行部署
- 最简单的方法是不添加
.npmrc
into .gitignore
。在这种情况下,该文件将始终位于存储库中,因此npm install
将在克隆项目的任何机器上顺利运行
- 如果您不想在存储库中包含令牌字符串,可以将其移动到 CI/CD 服务的环境变量中,然后将 .npmrc 文件链接到该变量。例如,您可以将生成的令牌放入
NPM_TOKEN
env 变量(只是来自 npmjs 的令牌,而不是来自 .npmrc 的整个字符串!)
然后更改.npmrc
按以下方式归档://registry.npmjs.org/:_authToken=${NPM_TOKEN}
.
因此,通过这些步骤,您应该能够毫无问题地安装受限软件包。祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)