我是JS的新手,正在尝试将代码分为多个模块。我正在运行nodejs,但我对此感到困惑,为什么会抱怨
pathChecker未定义。有什么想法吗?
<
const http = require('http');
const parseUrl = require('parseurl');
const path = require('path');
http.createServer( function (req, res)
{
try
{
// this is library function
var pathName = decodeURIComponent(parseUrl(req));
// create a literal validateFile to validate the path
var validateFile = new pathChecker(pathName);
// This is an engine to validate the path problems related to security, existence etc.
validateFile.pathCheck();
if(validateFile.error === true) {
res.statusCode = validateFile.statusCode;
res.end(validateFile.ErrorMsg);
return;
}
}
catch(err)
{
res.statusCode = err.status || 500;
res.end(err.message);
}
}).listen(4000);
我还有另一个文件叫做
errorHandler.js
function pathChecker(path)
{
this.error = true;
this.path = path;
this.statusCode = 500;
this.ErrorMsg = "Internal Server Error";
this.pathCheck = function()
{
if(!path)
{
this.statusCode = 400;
this.ErrorMsg = 'path required';
this.error = true;
}
else{
this.statusCode = 200;
this.ErrorMsg = undefined;
this.error = false;
}
}
};
运行此命令后,我得到输出
未定义pathChecker
最佳答案
您需要将文件导出和导入为模块。您可以这样操作:
// File A.js
function A() {
}
module.exports = A;
// File B.js
var A = require("./A");
A();
请注意,名称A在导入中是任意的,您可以随意命名。您还可以导出带有功能而不是单个功能的对象,然后在导入时可以获取其属性。这样,您可以从一个文件中导出多个函数或值。
关于javascript - 如何在node.js中从一个文件到另一个文件调用JS函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46107985/