JS commonjs 导出函数显示为未定义

问题描述

我在 app.js 中定义了一个函数,如下所示:

const sendNotif = (userIds,type,content) => {...}
exports.sendNotif = sendNotif;

然后我将它导入到 service.controller.js 中,如下所示:

const { sendNotif } = require("../app");
sendNotif(...)

当我在 vscode 中将鼠标悬停在它上面时,我可以看到函数定义,但是,当我运行代码时,我发现 sendNotif 不是一个函数,当我使用 typeof 记录它的类型时,我得到未定义。

编辑:我使用的是没有任何捆绑器或编译器的 nodejs,我还在 app.js 中通过执行导出.http = htpp 导出 HTTP 服务器,然后将其导入 index.js 并使用它,然后它工作正常。除了这个文件,我可以从 app.js 的任何地方导入东西,我不能导入任何东西。

更新: 我试过这样做:

const app = require("../app");
console.log(app);

然后我得到一个空对象

更新:我可以从同一级别、同一目录中的应用程序导入该函数,但不能形成更深层次的文件,(例如 ./ vs ../)

一个更新:我将我的节点版本从 12.4 更新到 15.6,现在我在控制台中得到了这个输出

(node:17052) Warning: Accessing non-existent property 'Symbol(nodejs.util.inspect.custom)' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:17052) Warning: Accessing non-existent property 'constructor' of module exports inside circular dependency
(node:17052) Warning: Accessing non-existent property 'Symbol(Symbol.toStringTag)' of module exports inside circular dependency
(node:17052) Warning: Accessing non-existent property 'Symbol(Symbol.iterator)' of module exports inside circular dependency

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...