簡體   English   中英

在 ES6 中使用 module.exports 導出多個函數

[英]Exporting multiple functions with module.exports in ES6

我正在構建一個 node.js 應用程序,我正在嘗試將所有 mongodb 邏輯放在一個單獨的文件中。 此時這個文件只有一個function來初始化mongodb連接。 我想使用module.exports從這個文件中導出所有函數。

我的 mongo 文件如下所示:

import { connect } from "mongoose";

const run = async (db: string): Promise<void> => {
  await connect(db, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  });
};

module.exports = {
  run
};

我想在 index.ts 中使用此運行 function 並嘗試將其作為 ES6 模塊導入,但我無法使用上述代碼。

我如何導入:

索引.ts:

import * as mongo from "./mongo";

試圖調用我的運行方法:

mongo.run('dburl');

這會引發以下錯誤:' property run does not exist '

現在我通過在我的運行聲明之前添加一個額外的導出找到了解決這個問題的方法:

export const run = async (db: string): Promise<void> => {...}

我不明白為什么我必須這樣做,因為我已經在 module.exports 中導出了這個module.exports ,我是在我的索引文件中導入錯誤還是有更好的方法呢?

MDN:JavaScript 模塊

JS中有不同類型的模塊。

ES6 模塊使用export關鍵字。 您可以導入所有導出,例如import * as... from "..."或通過import {... } from "..."導入單個導出

CommonJS 模塊使用modules.exports ,相當於 ES6 模塊中的export default 您可以像這樣導入這些import... from "..."

因此,當您使用modules.exports時,您要么必須將導入更改為:

const mongo = require('./mongo');

或者您可以將導出更改為:

export { run }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM