How to run simple app with koa2?

Problem

I am trying to run simple http server using , but have problems running it.

It uses that is expected to work in future versions and I was wondering how can I run it with node v6.1.0 ?

Code

import Koa from 'koa';    
const app = new Koa();

// Setup handler.
app.use(async ctx => {
    ctx.body = "Hello World!";
});

// Start server.
app.listen(3000);

Output

$ node --version
v6.1.0

$ node --harmony index.js
C:\Users\gevor\WebstormProjects\untitled1\index.js:1
(function (exports, require, module, __filename, __dirname) { import Koa from 'koa';
                                                              ^^^^^^
SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:511:25)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:456:32)
    at tryModuleLoad (module.js:415:12)
    at Function.Module._load (module.js:407:3)
    at Function.Module.runMain (module.js:575:10)
    at startup (node.js:160:18)
    at node.js:445:3

Question

I want to know how to run my app?

Similar Issues

Answers:

Answer

Solution

I was able to find workaround and will describe solution that includes installing Babel module

Step 1 - Install Babel and required presets

$ npm install babel-core --save
$ npm install babel-preset-es2015-node5 --save
$ npm install babel-preset-stage-3 --save

Step 2 - Create index.js file with babel-core/register requirement

// set babel in entry file
require('babel-core/register')({
    presets: ['es2015-node5', 'stage-3']
});

require('./app');

Step 3 - Put your sample code inside of app.js

import Koa from 'koa';    
const app = new Koa();

// Setup handler.
app.use(async ctx => {
    ctx.body = "Hello World!";
});

// Start server.
app.listen(3000);

After running node index.js server works like a pie and import, async, await are being processed properly.

References

Answer

Upgraded your node version to at least 7.6 after that there is no need to transpile your code using babel which is highly avoidable in production.Node >7.6 version support async/await which is very powerful.

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.