NodeJS 静态函数不是函数

NodeJS Static function is not a function

我制作了一个 NodeJS 应用程序,它使用静态方法来执行一些计算功能。 当我尝试访问该方法时,我得到了 isNotAFunction 错误。

这里是静态的 class 导致访问时出错:

exports.module = class PlaceEvaluator
{
    static testMethod()
    {
        console.log("Test");
    }
}

读取时抛出异常的文件代码如下:

PositionFinder = require("./positionFinder.js");
PlaceObj = require("./placeObj.js");
PlaceEvaluator = require("./placeEvaluator.js");
fetch = require("cross-fetch");
const express = require("express");
const http = require("http").createServer(express);
const io = require("socket.io")(http, {
    cors:{
        origin: "*"
    }
});



const application = express();

application.use(express.static("public"));

PlaceEvaluator.testMethod();

io.on("connection", socket => {
    socket.on("placeQuery", async ({topic, lat, long}) => {
       
        PlaceEvaluator.testMethod();  //Here is the Exception function call 
       
        //console.log("Response sent!");
    })
})

async function findPlaceObject(type, lat, long)
{
    let placeObj = await PositionFinder.FetchPosition(type, lat, long);
    return placeObj;
}

function convertToPlaceObjArr(inputObj)
{
    var outputArr = [];

    let name;
    let lat;
    let long;
    

    for(var i = 0; i < inputObj.results.length; i++)
    {
        name = inputObj.results[i].name;
        lat = inputObj.results[i].geometry.location.lat;
        long = inputObj.results[i].geometry.location.lng; 
        outputArr.push(new PlaceObj(name, lat, long));
        console.log(inputObj.results[i].name);
    }

    return outputArr;
}


http.listen(4000, function(){
    console.log("Running on Port 4000");
    // PositionFinder.FetchPosition("Pizza", "51.896359", "6.982303");
});

您需要使用 module.exports 导出默认值而不是 exports.module

通过使用 exports.module,您将使用 module 的密钥导出 class,因此在这种情况下,您必须执行以下操作:

PlaceEvaluator.module.testMethod();