我是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/

10-09 08:59