无法在Google Cloud Functions中安装私有GitHub npm软件包

时间:2019-11-09 16:38:50

标签: node.js github npm google-cloud-functions

我正在尝试将微服务部署到GCF,该服务依赖于私有GitHub托管的软件包。为了获得对该程序包的访问权限,我按照here的说明向函数添加了一个.npmrc文件,该文件如下所示:

registry=https://npm.pkg.github.com/OWNER
//npm.pkg.github.com/:_authToken=PERSONAL-ACCESS-TOKEN

还尝试在Cloud Function中使用NPM_TOKEN env变量

NPM_TOKEN=PERSONAL-ACCESS-TOKEN

两者均导致以下错误:

  

OperationError:代码= 3,消息=构建失败:{错误:{canonicalCode:“ INVALID_ARGUMENT”}}

     

npm错误!找不到404:@ packagescope / packagename

在本地安装可以正常工作,在Zeit Now上部署也可以。

1 个答案:

答案 0 :(得分:1)

我只是遇到了这个问题,所以我将分享适用于节点v8和v10 Cloud Functions的修复程序。

以下是使用.npmrc从私有Github软件包注册表安装软件包的要求:

  1. .npmrc必须与package.json文件位于功能文件夹中
  2. 您的帐户/组织范围的注册表项是必需的,包括这样的URL,假设Anchorman使用Github:@ronburgundy:registry=https://npm.pkg.github.com/ronburgundy
  3. 身份验证需要Github个人访问令牌,就像//npm.pkg.github.com/:_authToken=ronburgundypersonalaccesstoken
  4. 假设您遵循最佳做法,并且不对.npmrc进行任何秘密处理,则需要确保将文件转换为包含个人访问令牌 prior ,以便通过Firebase cli进行部署,因为没有其他方法可以在运行时注入值。

因此,原始示例将如下所示工作:

@OWNER:registry=https://npm.pkg.github.com/OWNER
//npm.pkg.github.com/:_authToken=PERSONAL-ACCESS-TOKEN

尽管Github的文档似乎建议您将所有作用域和无作用域的软件包安装重定向到他们的注册表,但Google Cloud Functions似乎不允许我们将所有软件包安装重定向到私有注册表,只有我们根据作用域配置的注册表