Google Cloud Functions包括私有库

Enc*_*der 8 node.js google-compute-engine google-cloud-functions

我想在节点中编写一个自定义库,我想将其包含在我的Cloud Functions中.由于这是共享代码,我希望能够在我的所有云功能中使用它.

编写共享代码库并通过多个云功能访问的最佳方法是什么.

例如,假设我有两个云函数,functionA和functionB.

我有一个名为"common.js"的节点javascript文件,它有一个javascript函数,我想向functionA和functionB公开.

exports.common = {
    log: function(message) {
        console.log('COMMON: ' + message);
    }
};
Run Code Online (Sandbox Code Playgroud)

所以在functionA中我想要这个文件并调用"common.log('test');".

我认为这是最基本的问题,但老实说,我无法在任何地方找到答案.

非常感激任何的帮助.这实际上是阻止我使用GCF作为我现在和未来开发代码的方式的唯一因素!

Bre*_*wen 7

如果您使用gcloud命令行工具来部署您的函数,它将上传本地目录中的所有1 个文件,因此任何正常的 Node.js 执行包含/要求的方式都应该有效。

在 Node.js 中,写入require('./lib/common')将包含子目录中的common.js文件lib。由于您的文件导出了一个名为的对象,因此common您可以直接从require. 见下文。

文件布局

./
../
index.js
lib/common.js
Run Code Online (Sandbox Code Playgroud)

索引.js

./
../
index.js
lib/common.js
Run Code Online (Sandbox Code Playgroud)

部署

$ gcloud functions deploy helloWorld --trigger-http
Run Code Online (Sandbox Code Playgroud)

笔记

1当前gcloud不会上传npm_modules/目录,除非您指定--include-ignored-files(请参阅gcloud 文档

  • 谢谢回复。如果我的理解是正确的,这意味着如果您要部署 3 个函数并且每个函数都使用相同的公共库,那么您必须在每个函数文件夹中复制这个公共库?有没有办法在不复制它的情况下在 3 个函数之间共享这个库?谢谢! (3认同)
  • 如果我的“lib/common.js”位于“functions”文件夹的**外部**怎么办?它会起作用吗? (2认同)