Node.js 谷歌云功能包括私有库

Node.js 谷歌云功能包括私有库,node.js,google-compute-engine,google-cloud-functions,Node.js,Google Compute Engine,Google Cloud Functions,我希望在node中编写一个自定义库,并希望将其包含在我的云函数中。由于这是共享代码,我希望能够在我的所有云功能中使用它 编写共享代码库并让多个云函数访问它的最佳方法是什么 例如,假设我有两个云函数,function和functionB exports.common = { log: function(message) { console.log('COMMON: ' + message); } }; 我有一个名为“common.js”的节点javascript文

我希望在node中编写一个自定义库,并希望将其包含在我的云函数中。由于这是共享代码,我希望能够在我的所有云功能中使用它

编写共享代码库并让多个云函数访问它的最佳方法是什么

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

exports.common = {
    log: function(message) {
        console.log('COMMON: ' + message);
    }
};
我有一个名为“common.js”的节点javascript文件,它有一个javascript函数,我想向functionA和functionB公开该函数

exports.common = {
    log: function(message) {
        console.log('COMMON: ' + message);
    }
};
所以在functionA中,我需要这个文件并调用“common.log('test');”

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

任何帮助都将不胜感激。这实际上是唯一阻止我现在和将来使用GCF开发代码的方法

如果您使用命令行工具部署您的功能,它将上载本地目录中的所有文件,因此任何正常的Node.js include/require方法都应该有效

在Node.js中,编写
require('./lib/common')
将在
lib
子目录中包含
common.js
文件。由于文件导出名为
common
的对象,因此可以直接从
require
返回的对象引用它。见下文

文件布局 index.js
//common.js导出一个“common”对象,因此直接引用它。
var common=require('./lib/common')。common;
exports.helloWorld=函数helloWorld(req,res){
common.log('已发出HTTP请求!');
物质状态(200);
}
部署 注意


1当前,
gcloud
不会上载
npm\u模块/
目录,除非您指定
——包含忽略的文件(请参见)

我发现处理此问题的最佳方法(无需通过npm发布包)是使用“预部署”复制脚本,即:

"scripts": {
    "copy-shared": "rm -rf ./shared && cp -rf ../shared ./ && cp ../credentials.json ./",
    "deploy": "npm run copy-shared && gcloud functions deploy updateUser --runtime nodejs12 --trigger-http",
    "dev": "npm run copy-shared && IS_DEV=true functions-framework --target=updateUser"
}

因此,您只需运行“npm-run-dev”(用于本地测试)或“npm-run-deploy”(用于发布),它将使用当前目录结构之外的文件夹更新共享文件夹。

Wow。。。我只是在功能方面没有正确的心态。现在这太明显了!我的设置正确,它100%完美地工作。非常感谢。谢谢你的回复。如果我的理解是正确的,这意味着如果您有3个要部署的函数,并且每个函数都使用相同的公共库,那么您必须在每个函数文件夹中复制此公共库?有没有办法在3个函数之间共享这个库而不复制它?谢谢如果我的
lib/common.js
位于
functions
文件夹之外怎么办?行吗?
"scripts": {
    "copy-shared": "rm -rf ./shared && cp -rf ../shared ./ && cp ../credentials.json ./",
    "deploy": "npm run copy-shared && gcloud functions deploy updateUser --runtime nodejs12 --trigger-http",
    "dev": "npm run copy-shared && IS_DEV=true functions-framework --target=updateUser"
}