如何使用具有云功能的私有NPM包?

Sam*_*ssé 15 node.js npm firebase google-cloud-functions

我正在尝试将应用程序切换到Firebase并将后端转移到Firebase云功能.

此应用程序使用私有package(@org/name)作为依赖项.

我尝试过不同的解决方案,但似乎都没有效果:

  • 通过环境NPM_TOKEN:由于Firebase限制为小写配置,因此无法实现
  • npm install 函数目录中的模块
  • .npmrc使用YARN和NPM身份验证令牌在函数目录中创建一个文件

它始终拒绝部署:

Deploy Error: Build failed: Module @org/name not found in npm registry

Firebase是否支持私有包?

Mik*_*les 9

Google Cloud Functions现在支持私有NPM包.

为了使用私有npm模块,您必须在位于函数目录中的.npmrc文件中为npm注册表提供凭据(auth令牌).使用npm login命令登录npm时,只需复制在主目录中创建的.npmrc文件即可.

如果您不使用私有存储库,请不要包含.npmrc文件,因为这可能会增加函数的部署时间.

资料来源:https://cloud.google.com/functions/docs/writing/dependencies#using_private_modules


Mic*_*ael 6

目前没有方便的方法.

在我看来,GCF不使用npm客户端从npm注册表获取,而是直接获取它.这可以防止使用标准.npmrc文件或npm客户端知道的任何其他方法.

您必须在本地打包并安装包并将其提交给源代码:

$ npm pack @org/name
$ npm install --save tarball-output.tgz
Run Code Online (Sandbox Code Playgroud)

这会将本地tarball添加到您package.json和Google Cloud Functions将知道使用它.

我真的希望他们.npmrc从项目根路径读取,或者我们可以将它们作为env变量传递给它们.

有一个未解决的问题:https: //issuetracker.google.com/issues/36665861


joe*_*bro -5

我也遇到了同样的问题,但后来我意识到我忘记了将依赖项添加到文件中package.json,该文件应该与您的文件位于同一目录中index.js