当我编译NodeJS时,我得到一个编译错误

时间:2014-11-19 08:57:07

标签: javascript node.js

mymodule.js

var fs = require('fs')
var path = require('path')
module.exports = function(dir, extension, callback){
    fs.readdir(dir, function(error, files){
        if(error)
            return callback(error)
        else {
            var res = files.filter(function(file){ return path.extname(file).slice(1) === extension;});
            callback(null, res)
         }
    }
}

program.js

   var mymodule = require("./mymodule")
   var path  = require("path")
   var dirname = process.argv[2]
   var extension = process.argv[3]

   mymodule(dirname, extension, function(error, files){
               if(!error)
                   console.log(files);
            }

当我运行node program.js /home/elqstux/ "erl"时,出现编译错误:

/home/elqstux/javascripting/mymodule.js:12
}
^
SyntaxError: Unexpected token }
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/elqstux/javascripting/program.js:1:78)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)

但是我找不到原因,谁可以帮助我?

2 个答案:

答案 0 :(得分:1)

您在文件末尾错过了结束});

应该是:

mymodule(dirname, extension, function(error, files){
    if (!error) {
        console.log(files);
    }
}); // <--- here

正确的缩进,包含;(即使它们是可选的)和{} if语句,使程序更具可读性。

您还可以使用JSLint或JSHint等工具,这些工具可能有助于在您实际运行程序之前发现此类错误和拼写错误。

答案 1 :(得分:1)

mymodule.js中,由于错误声明您需要);,因此:

var fs = require('fs')
var path = require('path')
module.exports = function(dir, extension, callback){
    fs.readdir(dir, function(error, files){
        if(error)
            return callback(error)
        else {
            var res = files.filter(function(file){ return path.extname(file).slice(1) === extension;});
            callback(null, res)
         }
    }); /* here */
}