Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Node.js中同时替换多个文件的内容?_Javascript_Node.js - Fatal编程技术网

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
});