导出时返回未定义的函数

Posted

技术标签:

【中文标题】导出时返回未定义的函数【英文标题】:Function returning undefined when exported 【发布时间】:2021-01-31 01:55:00 【问题描述】:

我在 node.js 中创建了一个具有 2 个函数的模块 - takeInput 和 getEventEmitter。这两个都是出口的。但是当我需要它是其他文件时,takeInput 工作正常,但 getEventEmitter 原来是未定义的。

这里是代码:-

// main module.js
function takeInput(db) 
    // logic to take input from user


function getEventEmitter(db) 
    const eventEmitter = new EventEmitter();

    console.log(takeInput);
    eventEmitter.on('function execution complete', () => takeInput(db));

    eventEmitter.emit('function execution complete');


module.exports = 
    takeInput,
    getEventEmitter

主模块.js 被导出的模块

const  getEventEmitter  = require('main module');

// Some lines of code ...
getEventEmitter(db); // Error here when this function is called.

报错如下

TypeError: getEventEmitter is not a function

请帮忙。

【问题讨论】:

您在(显示的)代码中没有实际导出函数的任何内容? @Bergi Yupp 我忘了添加那行。我已经编辑过了。 【参考方案1】:

您需要从 main module.js 中导出这两个函数

function takeInput(db) 
    // logic to take input from user


function getEventEmitter(db) 
    const eventEmitter = new EventEmitter();
    console.log(takeInput);
    eventEmitter.on('function execution complete', () => takeInput(db));
    eventEmitter.emit('function execution complete');


export   takeInput, getEventEmitter 

然后就可以了。

【讨论】:

是的,它已被导出。当我导入它时,takeInput 工作正常,但 getEventEmitter 抛出 TypeError。

以上是关于导出时返回未定义的函数的主要内容,如果未能解决你的问题,请参考以下文章

使用导出函数时无法读取未定义的属性

为啥 Router() Express 函数返回未定义?

为啥 datadog lambda 检测返回“datadog-lambda-js/handler.handler 未定义或未导出”?

酶测试问题返回未定义

为啥这个异步函数返回未定义? [复制]

在返回承诺的函数上使用 .success 时,未定义不是函数