2016-03-12 16 views
5

Mam nadzieję, że jest to proste pytanie. Próbuję zaimportować MongoDB za pomocą stylu importu z es6. Jeśli importuję przy użyciu węzła wymagającego, działa poprawnie.Jak importować MongoDB przy użyciu importów w stylu es6?

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

Ale jeśli zaimportuję, to sposób, w jaki łamie się bez błędów i logów.

import {MongoClient} from 'mongodb'; 

Ale nie pęka, gdy kompilacja/uruchamianie go zrywa się tylko wtedy, gdy próbuję zrobić cokolwiek z MongoClientem.

Oto mój menedżer Db wykładowa

import {MongoClient} from 'mongodb'; 

export class DbManager { 

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

} 

Kiedy uruchomić mój serwer mam kilka dzienników od innych menedżerów i wydarzeń.

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

Ale jeśli robię console.log z MongoClient po prostu nie ma wyjścia.

import {MongoClient} from 'mongodb'; 

export class DbManager { 

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

} 

a wyjście wygląda this-

mycomputer myuser$ ./start.sh 
mycomputer myuser$ 

Brak błędy kompilacji, więc nie rozumiem, dlaczego to nie działa. Ponadto nie rozumiem, dlaczego nie ma żadnych dzienników! Jest to jedna z ostatnich rzeczy, które powinny się zdarzyć, przynajmniej powinny być rejestrowane do tego momentu, o którym myślę. Jeśli chcesz zobaczyć mojego start.sh skrypt tutaj jest (szybkie i brudne, nie mnie oceniać):

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 

EDIT

Ustawicznej, aby szukać odpowiedzi podczas oczekiwania (nadzieję) dla odpowiedzi. Biorę również zapoznać się z powstałego final.js a jeśli MongoClient jest używany w dowolnym miejscu pliku wywołanie System.register funkcja wygląda jak to-

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

A jeśli nie będę go używać (nawet jeśli importować go) to nie pokazuje mongodb.

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

To by wyjaśniało, dlaczego nic by się nie stało. Coś jest nie tak z próbą importowania mongodb. Nie jestem jeszcze pewien, co robić.

EDIT, EDIT

Znaleziono rozwiązanie. Nie jestem zachwycony, ale może tak właśnie musi być.

Nie sądzę, abym mógł polegać na imporcie es6. Wygląda na to, że mogę go użyć do zaimportowania typedefs, ale nie do rzeczywistego modułu. Jak to się stało, to:

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

Dużo dodatkowej pracy. Jeśli jest inny sposób, proszę daj mi znać.

+0

Tak to wygląda jak można importować typedefs ale nie rzeczywisty moduł. W rzeczywistości jest to intencja, ponieważ nie jest to to samo, co system 'require'. –

Odpowiedz

1
import { MongoClient } from 'mongodb'; 

tylko definicja typu importu z node_modules/@types/mongodb/index.d.ts

import * as mongodb from 'mongodb'; 

importuje wszystko od node_modules/MongoDB/index.js i jego samego jako

let mongodb = require('mongodb'); 
Powiązane problemy