希望这是一个简单的问题。我正在尝试使用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'系统不同。 –