首页 > 解决方案 > 使用 import 语法而不是使用 require 时未定义 Mongoose

问题描述

所以我的模块是这样写的

import mongoose from 'mongoose';

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

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

}

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

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

import { connect } from 'mongoose'

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

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


我在带有 NestJS 的 Node.js 上运行这个,在打字稿文件上。

标签: javascripttypescriptmongooseecmascript-6nestjs

解决方案


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

ES15 (NodeJS)

const mongoose = require('mongoose');

然后使用mongoose.connect

ES16(导入/导出)

import * as mongoose from `mongoose`;

然后使用mongoose.connect

或者

import {connect} from `mongoose`;

然后直接使用连接


推荐阅读