使用导入语法而不是使用 require 时,Mongoose 未定义

Aba*_*ara 5 javascript mongoose typescript ecmascript-6 nestjs

所以我的模块是这样写的

import mongoose from 'mongoose';

export class MyModule {
   constructor(){
       //do
   }

   create(str){
      mongoose.connect(str); //cannot find property 'connect' of undefined
   }

}
Run Code Online (Sandbox Code Playgroud)

使用导入语法时,cannot find property 'connect' of undefined出现错误;它在使用 require 时按预期工作。

奇怪的是,通过导入语法导入单个属性按预期工作,

import { connect } from 'mongoose'
Run Code Online (Sandbox Code Playgroud)

但由于其他一些原因,我需要访问整个 ORM。

为什么会这样?难道我做错了什么?公平地说,我在 ES6 模块系统、TypeScript 和 Node.js 方面没有太多经验,所以我可能在这里遗漏了一些东西。


我在 Node.js 和 NestJS 上运行它,在打字稿文件上。

Bin*_*iya 6

我们可以在这里使用总共 2 个语法。

ES15 (NodeJS)

const mongoose = require('mongoose');
Run Code Online (Sandbox Code Playgroud)

然后使用mongoose.connect

ES16(导入/导出)

import * as mongoose from `mongoose`;
Run Code Online (Sandbox Code Playgroud)

然后使用mongoose.connect

或者

import {connect} from `mongoose`;
Run Code Online (Sandbox Code Playgroud)

然后直接使用connect