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”)
/用户//文档/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:12Javascript 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) 在/
取决于上的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);
}