在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)
但是我找不到原因,谁可以帮助我?
答案 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 */
}