Description
Hello, I have an issue involving SystemJS/CommonJS interop and definition files. I can't find any acceptable solution for now.
My app consists of
- a server part that compiles to CommonJS
- a client part that compiles to SystemJS (flag allowSyntheticDefaultImports on)
- a shared part that is imported (copied) into both client and server parts.
I cannot figure out how to import some libs like bluebird or lodash without having either the compiler complaining about something or an exception at execution level. I used definitions files provided by DefinitivelyTyped for bluebird/lodash.
I tried all import syntaxes I could find, but without success
import Promise from 'bluebird';
do not compile on CommonJS,
Module '"bluebird"' has no exported member '_'.
import {Promise} from 'bluebird';
still do not compile on CommonJS,
Module '"bluebird"' has no exported member '_'.
import * as Promise from 'bluebird';
compile on both CommonJS and SystemJS, but crashes during execution, on some functions that directly use Promise as constructor
import Promise = require ('bluebird')
old syntax compiles on both CommonJS and SystemJS. But crashes at execution on SystemJS, because Promise cannot be used directly as constructor/function.
Error: TypeError: Promise is not a constructor(…)
Do you have any solutions for this problem ? What is the right way to do in this case ?