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)/User//Documents/GitHub//xml2js.js:19 next (err);^
(/UsersDocuments/GitHub//node_modules/walk/lib/walk.js:134:10):ReferenceError: next未在Walker.fDirWalkError (/User//Documents/GitHub//xml2js.js:19:9)、Walker.emit (events.js:321:20)、Walker._wPostFilesHandler、Array.forEach ()、Array.forEach()、Walker.next上定义。(/Users//Documents/GitHub//node_modules/walk/lib/walk.js:84:10) at /Users//Documents/GitHub//node_modules/walk/lib/walk.js:106:12的Walker._wLstatHandler as _wCurFileCallback
发布于 2020-02-17 07:30:09
取决于https://www.npmjs.com/package/walk的步行文档
下一个param是事件发送的第三个param。
在您的情况下,您使用的是
function fDirWalkError (err) {
console.log ("fDirWalkError: " + err);
next (err);
}但是您没有从函数args中的模块中获得下一个函数
尝试将其放入您的处理程序args中。
像这样
function fDirWalkError (err, nodeStatsArray, next) {
console.log ("fDirWalkError: " + err);
next (err);
}它应该能工作
https://stackoverflow.com/questions/60257616
复制相似问题