Javascript 如何在Node.js中同时替换多个文件的内容?
这里的问题是只修改了最后一个文件。但所有文件都返回成功消息。怎么了?谢谢Javascript 如何在Node.js中同时替换多个文件的内容?,javascript,node.js,Javascript,Node.js,这里的问题是只修改了最后一个文件。但所有文件都返回成功消息。怎么了?谢谢 var fs = require('fs'), fileArr = [ 'base/general.css', 'components/bootstrap_icons.css', 'components/fullpage_slider.css' ]; for(var key in fileArr
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');
}
});
});
}
你有一个范围问题 在您编写文件时,
键
已处于最后一点
请尝试以下方法:
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]);
}
或者,您可以简单地使用Array.prototype.forEach()(),而不必求助于闭包或IIFE(立即调用的函数表达式):
很乐意帮助@Barry:-)
fileArr.forEach(function(file) {
// do stuff
});