node.js - 如何使用 Firebase Cloud Functions .npmrc 设置私有(private) NPM 模块?

标签 node.js firebase npm google-cloud-functions

我创建了一个私有(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。

但是,我仍然收到相同的错误消息。我错过了什么?以上是我从大量谷歌搜索中串起来的。

最佳答案

看来您在尝试使其工作时进行了太多不同的更改,所以让我们逐步完成整个过程。

  1. 检查 npm 模块的 package.json 并发布它:

    • 删除“private”属性或将其设置为 false,因为 npm 中的私有(private)模块永远不会发布。这并不明显,但确实如此。
    • 下一步是对包应用限制访问。为此,添加这样的 propertypackage.json 文件中:
    "publishConfig": {
        "access": "restricted"
    },
    
    • 确保用于发布的 npm 帐户 supports私有(private)包裹。
    • 现在在包的根目录中打开终端,键入 npm login 然后登录到 npm。检查您是否将正确的版本放入 package.json
    • 运行 npm publish。该包应在几秒钟内发布。不用担心,感谢 publishConfig 属性,没有人可以访问它。
  2. 现在是时候在您的项目中安装包了

    • 进入项目目录,打开package.json文件
    • 检查 dependencies 列表中是否有包的名称和版本
    • 打开浏览器,导航到 https://npmjs.com , 登录到您的帐户,导航到您帐户的设置页面并打开 tokens 选项卡
    • 创建新 token 并复制
    • 现在再次转到您的项目目录,与 package.json 文件所在的同一级别(这很重要!)并在那里创建 .npmrc 文件。
    • 将这样的字符串放入.npmrc文件中:
    //registry.npmjs.org/:_authToken=TOKEN_HERE
    

    大功告成!

  3. 使用远程 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/

相关文章:

node.js - package.json 与 "npm install %s -g"

firebase - Firestore 用户管理最佳实践?

node.js - NodeJs 和 npm : The package mocha does not satisfy its siblings' peerDependencies requirements

node.js - hello world 上的 node-gyp 构建错误

javascript - 在客户端重用 JavaScript 代码(node.js、express)

node.js - koa-passport logout() 不是清除 session

android - Native Express AdView 未显示

java - Firebase 数据库数据检索在空对象引用上给出 NullPointerException 'java.lang.String java.lang.Object.toString()'

docker - 运行npm run start时如何禁止npm self 升级?

css - 如何在当前目录中为单个文件编译 node-sass