如何使用es6风格导入导入MongoDB?

希望这是一个简单的问题。 我正在尝试使用es6 import-from样式导入MongoDB。 如果我导入使用节点要求它工作正常。

let mongo = require('mongodb'); let MongoClient = mongo.MongoClient; 

但是如果我导入es6的方式,它没有错误或日志打破。

 import {MongoClient} from 'mongodb'; 

但编译/运行时,它不会中断,只有在我尝试使用MongoClient时才会中断。

这是我的Db经理类,

 import {MongoClient} from 'mongodb'; export class DbManager { constructor() { console.log('Constructing DB Connection'); } } 

当我运行我的服务器时,我从其他pipe理器和事件中获得了几个日志。

 mycomputer myuser$ ./start.sh Server Constructing Route Manager Constructing Initializing Route: Static Constructing DB Connection http server started on port: 8000 

但是如果我做了一个MongoClient的console.log,那么根本就没有输出。

 import {MongoClient} from 'mongodb'; export class DbManager { constructor() { console.log('Constructing DB Connection'); console.log(MongoClient); } } 

输出看起来像这样 –

 mycomputer myuser$ ./start.sh mycomputer myuser$ 

没有编译错误,所以我不明白为什么这不起作用。 此外,我不明白为什么没有任何日志! 这是最后发生的事情之一,至less应该logging下来,直到我想。 如果你想在这里看到我的start.sh脚本(快速而肮脏,请不要评价我):

 tsc echo "var System = require('systemjs');" > dist/final.js babel dist/typescript.js >> dist/final.js echo "System.import('main');" >> dist/final.js node dist/final.js 

编辑

在等待(希望)回应时继续寻找答案。 我正在看看生成的final.js ,如果MongoClient在文件中的任何地方使用System.register函数调用看起来像这样 –

 System.register("db/db.manager", ["mongodb"] ... 

如果我不使用它(即使我input它)它不显示mongodb

 System.register("db/db.manager", [] ... 

这将解释为什么什么事情都不会发生 尝试导入mongodb出错了。 还不确定该怎么做。

编辑编辑

find了解决办法。 一个我不高兴,但也许这只是它的方式。

我不认为我可以依靠es6import。 它看起来像我可以用它来导入typedefs而不是实际的模块。 我如何解决这个问题就像这样 –

 import {Db as MongoDb, MongoClient} from 'mongodb'; let mongodb = require('mongodb'); let mongoClient: MongoClient = mongodb.MongoClient; 

很多额外的工作。 如果有另一种方式,请让我知道。

 import { MongoClient } from 'mongodb'; 

只是从node_modules/@types/mongodb/index.d.ts导入types定义

 import * as mongodb from 'mongodb'; 

从node_modules / mongodb / index.js中导入所有的东西,和它一样

 let mongodb = require('mongodb');