无法在nodejs中导出函数

Not able to export function in nodejs

我在其中一个文件中定义了一个函数服务

import Category from '../models/Category.js';

export const AllCategories = () => {
        console.log('hit');
        const cursor =  Category.find({});
        console.log(cursor);
        return cursor
}


export default {AllCategories}

我正在将其导入控制器文件

import express from 'express';
import categoryService from '../services/categories.js'
const router = express.Router();

export const getCategories = async(req,res) => {
    try {
        const categoriesInfo = categoryService.AllCategories
        res.status(200).json(categoriesInfo)
    } catch (error) {
        res.status(404).json({ message: error.message });
    }
}

export default router;

但问题是 AllCategories 没有得到 运行,这里有什么问题

我也试过添加async/await

import Category from '../models/Category.js';

export const AllCategories = async () => {
    try {
        console.log("hit");
        const cursor =  await Category.find({});
        console.log(cursor);
        return cursor
    } catch (error) {
       return error 
    }
}


export default {AllCategories}

但还是没有运气

您没有调用该函数,这会将其保存在变量中 categoriesInfo:

const categoriesInfo = categoryService.AllCategories

获取其 return 值:

const categoriesInfo = await categoryService.AllCategories();

注意:如果您正在执行数据库事务,我认为您需要创建它 async,因此请保留第二个版本并对其进行测试。

您不能在 node.js 中默认使用 ES module or ESM 语法。您要么必须使用 CommonJS 语法,要么必须执行以下操作之一。

  1. 将文件扩展名从 .js 更改为 .mjs
  2. 向最近的 package.json 文件添加一个名为 type 的字段,其值为 module