Express Js Deployment
Your Expressjs project directory should look something like this:
projectRoot
|___ src
|___ <FUNCTION NAME>
|___ index.js
|___ .lyrid-definition.yml **
Where FUNCTION NAME
should export your express app.
This will be used as follows:
const entry = require('./src/<FUNCTION NAME>')
// ......
const port = process.env.PORT || 3000;
entry.listen(port, () => {
console.log('Listening on port', port);
});
Lyrid Definition
Your lyrid definition should look something like this:
// Your .lyrid-definition.yml
name: <YOUR APP NAME>
// ......
modules:
- name: <YOUR MODULE NAME>
language: nodejs(12|14|16|18).x
web: express
// ......
functions:
- name: <FUNCTION NAME>
// ......
note
Starting from Node 16+ most our build script uses yarn
as package manager as opposed to npm
.
It may cause issues during package installation in Lyrid's Platform if you are not using the same package manager.
- Node 12 - npm
- Node 14 - npm
- Node 16 - yarn
- Node 18 - yarn
Example
Here is an example:
Project file structure
projectRoot
|___ src
|___ entry.js
|___ index.js
|___ .lyrid-definition.yml **
Entry.js
const express = require('express');
const path = require('path');
const app = express();
// Middlewares
var morgan = require('morgan')
app.use(morgan('combined'))
app.get('/env', function(req, res) {
res.json(process.env)
})
app.get('/env/:key', function(req, res) {
const envkey = req.params.key
res.json({
[envkey]: process.env[envkey]
})
})
// Default Routes - Static file + index.html handler
app.use(express.static(path.join(path.resolve(), 'dist')));
app.get('/', function(req, res) {
res.sendFile(path.join(process.cwd(), 'dist/index.html'));
});
app.get('/api/version', function(req, res) {
res.json({
'NodeJS Version': process.version,
'Cloud Environment': v1.0.0-alpha
})
});
// Error handler
app.use((err, req, res, next) => {
res.status(500).send('Internal Serverless Error: ' + err);
});
module.exports = app;
Lyrid Definition
name: nodejs16_sample_1
description: App Description
ignoreFiles: .git node_modules
modules:
- name: template
language: nodejs16.x
web: express
description: Module description
functions:
- name: entry
description: the entry point for the function