用Javascript编写的脚本不能自行终止?

时间:2016-06-29 02:07:07

标签: javascript node.js

您好我编写了一个具有递归函数的脚本,该函数采用路径并解析目录结构。该脚本按预期工作,但它不会自行终止。脚本是用Javascript编写的,它使用了诸如fs(文件系统)和路径之类的NodeJs模块。

我的代码:

var parseDirectory = function(currPath, tags, func){
    var util = util || require('./util');
    var fs = fs || require('fs');
    var path = path || require('path');
    if(!util.fileExist(currPath)) {
        throw new Error('Path is invalid, it does not exist.');
    }

    //get the stat and do operation according to file type
    var stat = fs.statSync(currPath);

    //if directory
    // - get all files inside the directory
    // - push the currPath in tags
    // - call parseDirectory for each file
    // - pop from the tags array
    if(stat.isDirectory()) {
        var files = fs.readdirSync(currPath);
        var fs = fs || require('fs');
        tags.push(path.parse(currPath).name);
        files.forEach(function(file) {
            parseDirectory(path.join(currPath,file),tags,func);
        });
        tags.pop();
    } else if(stat.isFile()) {
        func(currPath,tags);
    } else {
        throw new Error('Path is not a file or Directory');
    }
}

//connect to db
var mongoose = mongoose || require('mongoose');
mongoose.connect('mongodb://localhost:27017/iconrepo');

// a sample call to parseDirectory
parseDirectory('icon/png/',[],function(filePath, tags) {
    var path = path || require('path');
    var fs = fs || require('fs');
    var File = require('./models/file');
    var stat = fs.statSync(filePath);

    var file  = new File({
        name : path.parse(filePath).name,
        type : path.extname(filePath),
        size : stat.size,
        tags : tags,
        path : filePath
    });

    //console.log(file);
    //file.save(function(err) {
    //  if(err) {
    //      throw new Error(err);
    //  }

    //  console.log('Added ', filePath);
    //});

    console.log('Exiting Callback for filePath',filePath);
});

console.log('Last statement of the script');

File.js

// a file schema file

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var fileSchema = new Schema({
    name: String,
    type: String,
    size: {type: Number},
    tags: [String],
    path: String
});

module.exports = mongoose.model('File',fileSchema);
// a file schema file

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var fileSchema = new Schema({
    name: String,
    type: String,
    size: {type: Number},
    tags: [String],
    path: String
});

module.exports = mongoose.model('File',fileSchema);

任何人都可以指出我正在犯的错误。

1 个答案:

答案 0 :(得分:1)

Mongoose建立了一个连接,可以让你的脚本继续运行。

致电mongoose.connection.close()结束您的脚本。