Mocha + TypeScript: Cannot use import statement outside a module

I was watching this video in order to learn how to add some simple tests to my Express routes but I am getting all kind of errors while executing a test. The error is:

import * as chai from ‘chai’;


SyntaxError: Cannot use import statement outside a module

I have read some similar Stack Overflow questions and GitHub issues but I didn’t find a solution for my own application. Finally I found Mocha documentation on GitHub regarding ES modules but it didn’t work:

I created the app using TypeScript and CommonJS module to transpile, so I added "test": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha src/test/*.ts" to the package.json scripts but I am getting the same error every time. I am using ts-node as a server.

Anyway, this is my tsconfig.json file:

    "compilerOptions": {
        "sourceMap": true,
        "target": "es6",
        "module": "commonjs",
        "outDir": "./dist",
        "rootDir": "./src"
    "exclude": [

And this is the src/test/mi-route.ts file:

import * as chai from 'chai';
import * as chaiHttp from 'chai-http';
import server from '../app';

// Assertions


describe('API Users', () => {
    // Test Route GET
    describe('GET /api/admin/users', () => {
        it('Should return all the users', done => {
                .end((err, response) => {

An this is my package.json scripts:

"scripts": {
    "dev": "ts-node-dev src/app.ts",
    "start": "node dist/app.js",
    "test": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha src/test/*.ts",
    "build": "tsc -p"

So… any suggestions? Should I change Common JS Module? Thanks in advance

53 thoughts on “Mocha + TypeScript: Cannot use import statement outside a module”

Leave a Comment