Hice una aplicación NodeJS que usaba un método estático para hacer alguna función de cálculo. Cuando intento acceder al método, aparece el error isNotAFunction.
Aquí una clase estática que causa el error al acceder a ella:
exports.module = class PlaceEvaluator { static testMethod() { console.log("Test"); } }Aquí está el código del archivo que arroja la excepción durante la lectura:
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"); });Debe usar module.exports para exportar un valor predeterminado en lugar de exports.module .
Al usar exports.module , está exportando su clase con la clave del module por lo que en ese caso tendría que hacer lo siguiente:
PlaceEvaluator.module.testMethod();