Skip to content
Apache OpenWhisk Web action redirecting request to Express.js applications
Branch: master
Clone or download
Latest commit 37506cf Aug 15, 2018

This project shows how to deploy new and existing Express.js applications to OpenWhisk. This tutorial takes less then 5 minutes to complete.


  • Apache OpenWhisk
  • node.js
  • IBM Cloud account


  1. Create new Express.js application
  2. Change relative paths
  3. Create OpenWhisk action
  4. Deploy application
  5. Test application

1. Create new Express.js application

Open a terminal, and type

$ npm install express-generator -g
$ express --view=pug myexpressapp
$ cd myexpressapp
$ npm install 

This creates a minimal Express.js application. To check it is working, start the application by typing the command npm start and load http://localhost:3000 in a browser.

2. Change relative paths

The generated Express.s application expects resources to be installed in the domain root folder but by default Apache OpenWhisk web actions are served from a sub-directory.

Change views/layout.pug:

doctype html
    title= title
    if baseurl
    link(rel='stylesheet', href='stylesheets/style.css')
    block content

3. Create OpenWhisk action

Add expressjs-openwhisk module dependency in your project.

$ npm install expressjs-openwhisk --save

Then create the Apache OpenWhisk action handling Web requests by forwarding them to expressjs-openwhisk. Create a file named action.js with this content:

const app = require('./app');
const forward = require('expressjs-openwhisk')(app);

function main(request) {
  return forward(request);

exports.main = main;

In package.json, add the following entry:

   "main": "action.js",

4. Deploy application

To deploy the application and dependencies on IBM Cloud, do:

$ zip -r .
$ wsk action update express --kind nodejs:6 --web raw \
    -p baseurl<org>_<space>/default/express/

Replace <org> and <space> by your IBM Cloud organization and space, respectively.

5. Test application

And finally test the application by opening<org>_<space>/default/express in a browser


Apache 2.0

You can’t perform that action at this time.