我正在尝试将微服务部署到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上部署也可以。
答案 0 :(得分:1)
我只是遇到了这个问题,所以我将分享适用于节点v8和v10 Cloud Functions的修复程序。
以下是使用.npmrc
从私有Github软件包注册表安装软件包的要求:
.npmrc
必须与package.json
文件位于功能文件夹中@ronburgundy:registry=https://npm.pkg.github.com/ronburgundy
//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似乎不允许我们将所有软件包安装重定向到私有注册表,只有我们根据作用域配置的注册表