Подтвердить что ты не робот

Как импортировать MongoDB с использованием импорта стиля es6?

Надеюсь, это простой вопрос. Я пытаюсь импортировать MongoDB, используя стиль импорта es6. Если я импортирую с помощью node, он должен работать нормально.

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

Но если я импортирую его в es6, он разбивается без ошибок или журналов.

import {MongoClient} from 'mongodb';

Но он не ломается, когда компиляция/запуск его только ломается, когда я пытаюсь что-то сделать с MongoClient.

Вот мой класс Db Manager -

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
  }

}

Когда я запускаю свой сервер, я получаю несколько журналов от других менеджеров и событий.

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

Но если я делаю console.log MongoClient, просто нет вывода.

import {MongoClient} from 'mongodb';

export class DbManager {

  constructor() {
    console.log('Constructing DB Connection');
    console.log(MongoClient);
  }

}

И результат выглядит следующим образом:

mycomputer myuser$ ./start.sh
mycomputer myuser$

Нет ошибок компиляции, поэтому я не понимаю, почему это не работает. Кроме того, я не понимаю, почему нет журналов! Это одна из последних вещей, которые происходят, по крайней мере, должны быть журналы до тех пор, пока я не подумаю. Если вы хотите увидеть мой start.sh script здесь, он (быстрый и грязный, не судите меня):

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"] ...

И если я его не использую (даже если я его импортирую), он не показывает mongodb.

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

Это объясняет, почему ничего не произойдет. Что-то не так с попыткой импортировать mongodb. Не уверен, что делать.

ИЗМЕНИТЬ EDIT

Найден решение. Один я не в восторге, но, возможно, это так, как должно быть.

Я не думаю, что могу полагаться на импорт es6. Похоже, я могу использовать его для импорта typedefs, но не для реального модуля. Как я обошел это так:

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

Много дополнительной работы. Если есть другой способ, пожалуйста, дайте мне знать.

4b9b3361

Ответ 1

import { MongoClient } from 'mongodb';

просто импортирует определение типа из node_modules/@types/mongodb/index.d.ts

import * as mongodb from 'mongodb';

импортирует все из node_modules/mongodb/index.js, а его значение равно

let mongodb = require('mongodb');

Ответ 2

Попробуй это:

import { default as mongodb } from 'mongodb';
let MongoClient = mongodb.MongoClient;