首页 > 解决方案 > 如何用express导出不同的功能

问题描述

我将此代码用于托管在 Google Cloud Repository 中的存储库。

我将此代码用于 Google Cloud Functions 的某些功能。

我想为不同的功能使用相同的存储库。我希望这是可能的:

功能1(账户)

功能2(信息)

这是我的代码:

const express = require('express');
const cors = require('cors');
const account = express();
const info = express();

account.use(cors({
    origin: '*'
}));
info.use(cors({
    origin: '*'
}));

const PORT = 5555;

const PORT2 = 5556;

const USERS = [
    {
        id: 1,
        firstName: 'John',
        lastName: 'Smith'
    },
    {
        id: 2,
        firstName: 'Jane',
        lastName: 'Williams'
    }
];

const COMMENTS = [
    {
        id: 1,
        firstName: 'John',
        lastName: 'Smith'
    },
    {
        id: 2,
        firstName: 'Jane',
        lastName: 'Williams'
    }
];

account.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

account.get('/users', (req, res, next) => {
    res.json(USERS);
});

account.get('/users/:userId', (req, res, next) => {
    res.json(USERS.find(user => user.id === parseInt(req.params.userId)));
});

info.listen(PORT2, () => {
    console.log(`Server running on port ${PORT}`);
});

info.get('/comments', (req, res, next) => {
    res.json(COMMENTS);
});

info.get('/comments/:commentId', (req, res, next) => {
    res.json(COMMENTS.find(comment => comment.id === parseInt(req.params.commentId)));
});

module.exports = {
    account,
    info
};

有了这个,我可以使用相同的 repo部署不同的功能帐户信息。但我不想实例化两个我认为是不好的做法的 express 对象。

我需要为不同的 Google Cloud Functions 导出两个函数。我怎样才能做到这一点?

标签: node.jsgoogle-cloud-functions

解决方案


最好组织你的代码。创建包含以下代码的 app.js 文件。使用一个端口。

const express = require('express');
const cors = require('cors');
const app = express();
const users = require('./users');
const comments = require('./comments');

app.use(cors({
    origin: '*'
}));
app.use('/users', users);
app.use('/comments', comments);

const PORT = 5555;
app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

/// place this in users.js    

const express = require('express');
const account = express.router;

account.get('/', (req, res, next) => {
    res.json(USERS);
});

account.get('/:userId', (req, res, next) => {
    res.json(USERS.find(user => user.id === parseInt(req.params.userId)));
});

module.exports = account;

// place in comments.js
const express = require('express');
const info= express.router;

const COMMENTS = [
    {
        id: 1,
        firstName: 'John',
        lastName: 'Smith'
    },
    {
        id: 2,
        firstName: 'Jane',
        lastName: 'Williams'
    }
];

info.get('/', (req, res, next) => {
    res.json(COMMENTS);
});

info.get('/:commentId', (req, res, next) => {
    res.json(COMMENTS.find(comment => comment.id === parseInt(req.params.commentId)));
});

module.exports = info;

推荐阅读