Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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
Node.js Gulp:程序的异常行为_Node.js_Gulp_Fs - Fatal编程技术网

Node.js Gulp:程序的异常行为

Node.js Gulp:程序的异常行为,node.js,gulp,fs,Node.js,Gulp,Fs,我是个新手,我对吞咽有点问题,这里有几点我想做的 我想查找扩展名为.storyboard的文件 (已经完成了) 每当某个文件的内容被删除时,我都要执行一项任务 变了, 我想查看该文件,并在中更改某些内容时查看该文件 那个档案 我想通过删除所有其他被删除的内容来重写它的内容 已经在文件中了 当我在扩展名为.storyboard的文件中进行更改时,它只会继续显示一条消息“完成”,文件已保存 这是我的密码: //fs to read and write files while path is fo

我是个新手,我对吞咽有点问题,这里有几点我想做的

  • 我想查找扩展名为.storyboard的文件 (已经完成了

  • 每当某个文件的内容被删除时,我都要执行一项任务 变了,

  • 我想查看该文件,并在中更改某些内容时查看该文件 那个档案

  • 我想通过删除所有其他被删除的内容来重写它的内容 已经在文件中了

当我在扩展名为.storyboard的文件中进行更改时,它只会继续显示一条消息“完成”,文件已保存

这是我的密码:

//fs to read and write files while path is for iterating directories
fs = require('fs'),
    path = require('path')
//DomParser to Parse Xml 
var DOMParser = new (require('xmldom')).DOMParser({ normalizeTags: { default: false } });

//Gulp for detecting changes
var gulp = require('gulp')

var mainStoryBoardFile;

function crawl(dir) {
    // console.log('[+]', dir);
    var files = fs.readdirSync(dir);
    for (var file in files) {

        var next = path.join(dir, files[file]);
        //iterate through files to check whether next is a file or direcory
        if (fs.lstatSync(next).isDirectory()) {
            //if its a directory dive into it
            crawl(next);
        } else if (next.indexOf('.storyboard') >= 0) {
            //if its a file just check it whether it is a .storyboard file or not
            mainStoryBoardFile = next;
            mainStoryBoardFile = mainStoryBoardFile.replace(/\\/g, "/");
        };
    }
}
//calling function
crawl(__dirname);

var newFilePath = './data.xml'
var document;
var dataFound;
//What to do
gulp.task('read', function (done) {
    dataFound = fs.readFileSync(mainStoryBoardFile, "utf-8");
    document = DOMParser.parseFromString(
        dataFound.toString()
    );
    done();
});

gulp.task('write', function (done) {
    fs.writeFile(mainStoryBoardFile, '', function () { console.log('done') })
    fs.writeFile(mainStoryBoardFile, document, (err) => {
        if (err) throw err;
        console.log('The file has been saved!');
    });

    done();
});
gulp.task('watch', function (done) {
    gulp.watch(mainStoryBoardFile, gulp.series('read', 'write'));

});

这里有一个解决这个问题的解决方案,您可以查看单个文件的更改,也可以在文件更改时执行某种功能。在xml的情况下,您可以查看一个文件,当它发生更改时,您可以添加新的属性或属性,也可以在xml文件中创建新元素

//Dependencies
//fs to read and write files while path is for iterating directories
var fs = require('fs'),
    path = require('path'), 
    DOMParser = new (require('xmldom')).DOMParser({ normalizeTags: { default: false } }),
    gulp = require('gulp'),
    arrayOfControls = require('./object.json'),
    RandExp = require('randexp');


console.log("GulpService has been Started\n");

function crawl(dir) {
    var files = fs.readdirSync(dir);
    for (var file in files) {

        var next = path.join(dir, files[file]);
        //iterate through files to check whether next is a file or direcory
        if (fs.lstatSync(next).isDirectory()) {
            //if its a directory dive into it
            crawl(next);
        } else if (next.indexOf('.storyboard') >= 0) {
            //if its a file just check it whether it is a .storyboard file or not
            mainStoryBoardFile = next;
            mainStoryBoardFile = mainStoryBoardFile.replace(/\\/g, "/");
        }
    }
}
//calling function
crawl(__dirname);
var mainStoryBoardFile;
var document, dataFound;


function readWrite() {
    crawl(__dirname);
    dataFound = fs.readFileSync(mainStoryBoardFile, "utf-8");
    document = DOMParser.parseFromString(
        dataFound.toString()
    );
    fs.writeFileSync(mainStoryBoardFile, '', function () {
        console.log('done')
    });
    fs.writeFileSync(mainStoryBoardFile, document, (err) => {
        if (err) throw err;
        console.log('The file has been saved!');
    });
}
var watcher = gulp.watch(mainStoryBoardFile);
watcher.on('change', function (path, stats) {
    readWrite();
    console.log('File ' + path + ' was changed');
    watcher.unwatch(mainStoryBoardFile);
    watcher.add(mainStoryBoardFile);
});

非常感谢你@usama,我去看看