首页 > 解决方案 > Class.method 不是使用 ES6 类的函数

问题描述

我创建了一个类,我想在我的 node.js 应用程序的路由中使用该方法。一个简单的代码片段描述了我在实际应用中遇到的一个类似问题。

myClass.js:

class MyClass {
    static async sayHi(name) {
        setTimeout(() => {
            return `Hello ${name}`
        }, 3000)
    }
}

module.exports = new MyClass()

index.js:

const MyClass = require('./myClass');
console.log(MyClass.sayHi)

我收到了这个错误:

undefined

试:

console.log(MyClass.sayHi('Hello'))

返回:

MyClass.sayHi is not a function

标签: javascriptnode.jsecmascript-6

解决方案


您正在导出MyClass. 静态方法不是在类的实例上调用,而是在类本身上调用。

如果您MyClass像这样导出:module.exports = MyClass,您的第二种方法应该有效。

编辑:

正如@TJ Crowder 指出的那样。如果该类位于名为 MyClass.js 的文件中,则从那里导入而不是索引。


推荐阅读