节点js:如何导出先前导出的函数以使其可见

时间:2018-03-25 07:32:28

标签: javascript node.js firebase google-cloud-functions systemjs

说我有以下 post.js

var functions = require('firebase-functions');
const express = require('express');
exports.post = functions.https.onRequest((req, res) => {
     //stuff.
});

然后我只想将此函数包含在主文件中,因此当运行需要post.js的index.js时,已经导出了post function

在firebase函数的情况下会运行https函数,但现在除非我在require文件中再次明确地执行了exposts.post,否则它不会。

我试过了。

index.js

// here
exports.post = require("./post");

//Another functions ...
exports.user = functions.https.onRequest((req, res) => {
    //stuff
});

但正因为如此exports.post = require("./post");,我得到http://localhost:5000/project-id/us-central1/post-post,这应该是...us-central1/post

此外,是否可以让所需模块从需求文件中引用其变量,以便我不必在 post.js 中对已存在的变量进行操作在index.js中,像" fs"来自文件系统。

感谢。

1 个答案:

答案 0 :(得分:0)

Soo好像您正在将帖子导出为属性。您需要将post.js更改为:

const functions = require('firebase-functions');
const express = require('express');
module.exports = functions.https.onRequest((req, res) => {
    //stuff.
});

关于您的问题。这通常是一个不好的做法。每个模块都需要有自己的作用域。因此,应该使用require在每个文件中要求所需的每个依赖项。如果仍要执行此操作,则可以使用全局变量。 More info