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();
我制作了一个 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();