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

When I compile NodeJS, I get an compile error

本文关键字:编译 错误 一个 NodeJS      更新时间:2023-09-26

In 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)

可是我找不到原因,谁能帮我?

文件末尾缺少结束});

它应该是:

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

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

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

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 */
}