希望這是一個簡單的問題。我正在嘗試使用es6 import-from樣式導入MongoDB。如果我使用節點導入,它的工作正常。如何使用es6風格導入導入MongoDB?
let mongo = require('mongodb');
let MongoClient = mongo.MongoClient;
但是,如果我導入它的es6方式它沒有錯誤或日誌打破。
import {MongoClient} from 'mongodb';
但是編譯/運行它只是休息,當我嘗試做任何事情MongoClient時,它不會破壞。
這裏是我的數據庫管理器接收機類
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
但是,如果我做的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$
有沒有編譯錯誤,所以我不明白爲什麼這是行不通的。此外,我不明白爲什麼沒有任何日誌!這是發生的最後一件事情之一,至少應該記錄下來,直到我想到的那一點。如果你想在這裏看到我的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"] ...
的文件,如果我不使用它(即使我導入),它在任何地方使用不顯示mongodb
。
System.register("db/db.manager", [] ...
這就解釋了爲什麼什麼都不會發生。嘗試導入mongodb
時出現錯誤。還不確定該怎麼做。
編輯編輯
實測值的溶液中。一個我並不高興,但也許這只是它的方式。
我不認爲我可以依靠es6進口。它看起來像我可以用它來導入typedefs而不是實際的模塊。我如何解決這個問題就像這樣 -
import {Db as MongoDb, MongoClient} from 'mongodb';
let mongodb = require('mongodb');
let mongoClient: MongoClient = mongodb.MongoClient;
很多額外的工作。如果還有其他方法,請讓我知道。
是的,它看起來像你可以導入的typedef但不是實際的模塊。這實際上是意圖,因爲它與'require'系統不同。 –