我正在尝试将微服务部署到 GCF,它依赖于私有 GitHub 托管的包。为了访问该包,我向该函数添加了一个 .npmrc 文件,如下所述here https://cloud.google.com/functions/docs/writing/specifying-dependencies-nodejs#using_private_modules,该文件如下所示:
registry=https://npm.pkg.github.com/OWNER
//npm.pkg.github.com/:_authToken=PERSONAL-ACCESS-TOKEN
还尝试在云函数中使用 NPM_TOKEN 环境变量
NPM_TOKEN=PERSONAL-ACCESS-TOKEN
两者都会导致以下错误:
操作错误:代码=3,消息=构建失败:{错误:{canonicalCode:“INVALID_ARGUMENT”}}
npm 错误! 404 未找到:@packagescope/packagename
本地安装效果很好,在 Zeit Now 上部署也是如此。
我刚刚遇到了这个问题,因此我分享了适用于节点 v8 和 v10 Cloud Functions 的修复程序。
使用时需要满足以下条件.npmrc
从私有 Github 包注册表安装包:
- The
.npmrc
需要位于与函数同级的文件夹中package.json
file
- 需要您的帐户/组织范围的注册表项,包括像这样的 url,假设 Anchorman 使用 Github:
@ronburgundy:registry=https://npm.pkg.github.com/ronburgundy
- 身份验证需要 Github 个人访问令牌,如下所示
//npm.pkg.github.com/:_authToken=ronburgundypersonalaccesstoken
- 假设您遵循最佳实践并且不承诺
.npmrc
对于秘密,您需要确保文件被转换为包含个人访问令牌prior通过 firebase cli 进行部署,因为没有其他方法可以在运行时注入该值。
因此,如果原始示例如下所示,则可以正常工作:
@OWNER:registry=https://npm.pkg.github.com/OWNER
//npm.pkg.github.com/:_authToken=PERSONAL-ACCESS-TOKEN
虽然 Github 的文档似乎建议您应该将所有范围内和未范围内的软件包安装重定向到其注册表,但 Google Cloud Functions 似乎不允许我们将所有软件包安装重定向到私有注册表,仅允许我们根据范围配置的软件包安装。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)