Node js: как экспортировать ранее экспортированную функцию, чтобы сделать ее видимой

Скажем, у меня есть post.js со следующим.

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

Затем я просто хочу включить эту функцию в основной файл, как она есть, чтобы при запуске index.js, который требует post.js, иметь уже экспортированный post function.

Что в случае с функциями firebase будет запускать функцию https, но теперь это не так, если я снова явно не сделаю 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" из файловой системы.

Спасибо.


person Relm    schedule 25.03.2018    source источник
comment
github.com/firebase/functions-samples/issues/170   -  person Linxy    schedule 25.03.2018
comment
Хорошо, спасибо за ссылку, это правильно.   -  person Relm    schedule 25.03.2018


Ответы (1)


Похоже, вы экспортируете сообщение как свойство. Вам нужно будет изменить post.js на:

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

Что касается вашего вопроса. Обычно это плохая практика. Каждый модуль должен иметь свою область видимости. Таким образом, вы должны требовать все зависимости, которые вам нужны в каждом файле, используя require. Если вы все еще хотите это сделать, вы можете использовать глобальные переменные. Подробнее

person ajorquera    schedule 17.09.2019