Javascript Next未定义Next(错误) var fs=require('fs'); var path=require('path'); var walk=需要(“walk”); var xml2js=require('xml2js'); var jsonDir; var convertXml=函数(xml\u dir、json\u dir){ jsonDir=json_dir; var walker=walk.walk(xml_dir,{followLinks:true}); 关于(“错误”,fDirWalkError); walker.on(“结束”,fDirWalkEnd); 关于(“文件”,fDirWalkFile); } 函数fDirWalkError(err){ console.log(“fDirWalkError:+err”); 下一个(错误); } 函数fDirWalkEnd(){ console.log(“==========目录漫游结束”); } 函数fDirWalkFile(root、fileStat、next){ if(fileStat.name.indexOf(“.xml”)

Javascript Next未定义Next(错误) var fs=require('fs'); var path=require('path'); var walk=需要(“walk”); var xml2js=require('xml2js'); var jsonDir; var convertXml=函数(xml\u dir、json\u dir){ jsonDir=json_dir; var walker=walk.walk(xml_dir,{followLinks:true}); 关于(“错误”,fDirWalkError); walker.on(“结束”,fDirWalkEnd); 关于(“文件”,fDirWalkFile); } 函数fDirWalkError(err){ console.log(“fDirWalkError:+err”); 下一个(错误); } 函数fDirWalkEnd(){ console.log(“==========目录漫游结束”); } 函数fDirWalkFile(root、fileStat、next){ if(fileStat.name.indexOf(“.xml”),javascript,node.js,Javascript,Node.js,/用户//文档/GitHub//xml2js.js:19 下一个(错误); ^ ReferenceError:未定义next at Walker.fDirWalkError(/Users//Documents/GitHub//xml2js.js:19:9) 在Walker.emit(events.js:321:20) 在Walker.wPostFilesHandler(/UsersDocuments/GitHub//node_modules/walk/lib/walk.js:134:10) 在/

/用户//文档/GitHub//xml2js.js:19 下一个(错误); ^

ReferenceError:未定义next at Walker.fDirWalkError(/Users//Documents/GitHub//xml2js.js:19:9) 在Walker.emit(events.js:321:20) 在Walker.wPostFilesHandler(/UsersDocuments/GitHub//node_modules/walk/lib/walk.js:134:10) 在/Users//Documents/GitHub//node_modules/foreachasync/foreachasync.js:15:16 在Array.forEach()处 在Walker.next[as _wCurFileCallback](/Users//Documents/GitHub/node_modules/foreachasync/foreachasync.js:14:15) 在Walker.wLstatHandler(/Users//Documents/GitHub//node\u modules/walk/lib/walk.js:84:10) 在/Users//Documents/GitHub//node_modules/walk/lib/walk.js:106:12


取决于上的walk文档

下一个参数是事件发送的第三个参数

在您的情况下,您正在使用

    var fs = require('fs');
    var path = require('path');
    var walk = require('walk');
    var xml2js = require('xml2js');

    var jsonDir ;
    var convertXml = function (xml_dir, json_dir) {
        jsonDir =  json_dir;

        var walker = walk.walk(xml_dir, { followLinks: true });
        walker.on("errors", fDirWalkError);
        walker.on("end", fDirWalkEnd);
        walker.on("file", fDirWalkFile);

    }

    function fDirWalkError (err) {
        console.log ("fDirWalkError: " + err);
        next (err);
    }

    function fDirWalkEnd  () {
        console.log ("======= End of directory walk");
    }

    function fDirWalkFile (root, fileStat, next) {
        if (fileStat.name.indexOf(".xml") < 0) {
            console.log ("skipping file " + fileStat.name + " (does not end in .xml)");
            return;
        } else {
            var xml_file = path.resolve(root, fileStat.name);
            console.log ("xml file: " + xml_file);

            fs.readFile('xml_file', function (err, data) {
                if (err) {
                    console.log ("error reading file:" + xml_file);
                    next (err);
                }
                xml2js.parseString (data, function (err, json_obj) {
                    if (err) {
                        console.log (err);
                        next (err);
                    }
                    var json_string = JSON.stringify(json_obj, null, 2);
                    var json_file = path.resolve (jsonDir, path.basename(xml_file).replace(/\.xml$/, ".json"));
                    console.log ("json file: ", json_file);

                    fs.writeFile(json_file, json_string, "utf8", function (err) {
                        if (err) {
                            console.log ("error converting yin (%s) to json(%s)", xml_file, json_file);
                            next (new Error ("error converting xml(" + xml_file + ") to json(" + json_file + ")"));
                        }
                        else {
                            console.log ("Converted xml (%s) to json(%s)", xml_file, json_file);
                        }
                    });
                });
            });
        }
        next ();
    }

module.exports.convertXml = convertXml;




var path = require ('path'); 
var xml2js = require ('./xml2js');
console.log ("__dirname: " + __dirname); 
var templateDir = path.resolve (__dirname); 
var xmlDir = path.resolve (templateDir, "xml");
var jsonDir = path.resolve (templateDir, "jsons"); 
console.log( templateDir); 
xml2js.convertXml (xmlDir, jsonDir)
但是您没有从函数参数中的模块获得下一个函数

尝试将其放入处理程序参数中

像这样

function fDirWalkError (err) {
    console.log ("fDirWalkError: " + err);
    next (err);
}

它应该可以工作

您试图调用的函数
next
来自Express请求处理程序。如果要使用它,您的代码必须直接位于请求处理程序中,以便该请求处理程序的
next
参数在范围内,或者您必须将该
next
传递给任何其他想要使用它的函数。因为在代码中没有显示请求处理程序,所以不清楚
next
来自何处。var path=require('path');var xml2js=require('./xml2js');console.log(“\uuuDirName:”+\uuuDirName);var templateDir=path.resolve(_dirname);var xmlDir=path.resolve(templateDir,“xml”);var jsonDir=path.resolve(templateDir,“jsons”);console.log(templateDir);xml2js.convertXml(xmlDir,jsonDir)。。。。。。。。这是调用此文件的main.js。注释中的多行代码不可读。如果您希望阅读您的问题的人看到这些内容,请使用“编辑”链接编辑您的问题并将其添加到问题中。进行了必要的更改我尝试了,但没有成功。基本上,我只是尝试将文件夹中的xml文件转换为json并保存在同一文件夹中
function fDirWalkError (err, nodeStatsArray, next) {
    console.log ("fDirWalkError: " + err);
    next (err);
}