如何使用MongoDB的ES6风格的进口导入?

问题描述 投票:10回答:1

希望这是一个简单的问题。我试图用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。它看起来像我可以用它来导入类型定义,但不是实际的模块。我怎么解决这个得到的是像这个 -

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

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

javascript node.js mongodb ecmascript-6 systemjs
1个回答
3
投票
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');

0
投票

尝试这个:

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

0
投票

我不得不使用import 'mongodb'没有运气,所以我用require通过导入createRequire

import { createRequire } from 'module'
const require = createRequire(import.meta.url);
const { MongoClient } = require('mongodb');

我在.mjs文件,其中要求甚至没有定义使用这一点,它的工作就像一个魅力。

© www.soinside.com 2019 - 2024. All rights reserved.