这里的问题是只修改了最后一个文件。但是所有文件都返回成功消息。它出什么问题了?感谢。
var fs = require('fs'),
fileArr = [
'base/general.css',
'components/bootstrap_icons.css',
'components/fullpage_slider.css'
];
for(var key in fileArr) {
fs.readFile(fileArr[key],'utf8', function(err,data) {
if(err){
return console.log(err);
} else {
console.log('success');
}
var result = data.replace(/([^\/][.*]|[(.]).*?(\bimages\b)/g,'(images');
fs.writeFile(fileArr[key], result, 'utf8', function(err) {
if(err) {
return console.log(err);
} else {
console.log('success');
}
});
});
}
答案 0 :(得分:1)
你有一个范围问题。
当您编写文件时,key
已经在最后一点。
请改为尝试:
for (var key in fileArr) {
(function (file) {
//new scope for this file
fs.readFile(file, 'utf8', function (err, data) {
if (err) {
return console.log(err);
} else {
console.log('success');
}
var result = data.replace(/([^\/][.*]|[(.]).*?(\bimages\b)/g, '(images');
fs.writeFile(file, result, 'utf8', function (err) {
if (err) {
return console.log(err);
} else {
console.log('success');
}
});
});
})(fileArr[key]);
}
答案 1 :(得分:0)
或者你可以简单地使用Array.prototype.forEach()(MDN Docs)而不必求助于闭包或IIFE(立即调用函数表达式):
fileArr.forEach(function(file) {
// do stuff
});